2015-05-07 3 views
0

У меня есть поле ввода, где я печатаю крайний срок в словах. Например, «5 минут», «2 дня», «6 недель», «8 месяцев». То, что я хочу для программы, это вычислить, сколько времени потребуется, когда этот крайний срок заканчивается. А также, если этот крайний срок заканчивается, например, если 80% данного времени прошло.Вычисление разницы во времени между 2 датой()

Я думал что-то вроде этого php разбивает заданное время в секундах, а затем проверяет, сколько минут и часов или дней подходит в эти секунды, а затем помещает это в dateTime. Подобно текущей дате + input = futureDate.

Я знаю, что я, вероятно, не должен использовать проценты, это просто пример.

<input type="text" name="getFutureTime"> 

<?php 
    $futureTime = $_POST['getFutureTime']; 
    $dateNow = date('d-m-Y H:i:s'); 

    if($futureTime > $dateNow){ 
     //Calculate 
     echo "Deadline has passed"; 
    }else if (($futureTime/100 * 80) < $dateNow){ 
     //Calculate 
     echo "Deadline is almost passed"; 
    } 
?> 
+0

возможно дубликат [Как вычислить разницу между двумя датами с помощью PHP?] (http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php) –

+0

@Uchiha этот пост преобразует время в слова, я хочу сделать это другим путем вокруг; слова на сегодняшний день. – Vasco

ответ

0

Здесь значения string, и вы не можете сравнить это так. Сначала конвертируйте их в timestamp. Попробуйте с -

$futureTime = strtotime($_POST['getFutureTime']); 
$dateNow = time(); 
+0

Зачем ПП «попробовать это»? Пожалуйста, добавьте объяснение того, что вы сделали, и почему вы сделали это таким образом не только для OP, но и для будущих посетителей SO. – Rizier123

0

У меня есть решение с, caculate как дата позже:) ..., скопируйте это локальный и запустить :) дифф

$d1=new DateTime("now"); 

$d2=new DateTime($_POST['DateInput']); 
$diff = $d1->diff($d2); 
echo "<pre>"; 
print_r($diff); 
echo "</pre>"; 
$date = $diff->format('%d'); //It date 
$year = $diff->format('%y'); //It year 
$month = $diff->format('%m'); //It month 

echo $diff->format('%a'). "<br/>"; 

foreach($diff as $key => $value){ 
    echo $key . "<br/>"; 
    echo $value; 
} 
$value = strtotime('14/12/2012'); 
echo($value); 

Update

$ diff-> format ('% a') // Дата дате сейчас 10/12/2015 - 10/5/2015 = 7

$ diff-> формат ('% а') 7

+0

Как это работает с такими словами, как «месяцы» и «недели»? Это то, с чем я борюсь. Кроме того, мне не нужна фиксированная дата, я хочу, чтобы программа получала дату из поля ввода. – Vasco

+0

Проверьте мой ответ – HoangHieu

0

Попробуйте это будет работать:

$date_a = new DateTime('2015-05-07 13:03:48'); 
$date_b = new DateTime('2015-02-04 13:03:41'); 
$interval = date_diff($date_a,$date_b); 
echo $interval->format('%m Months %d Days %h Hours %i Minutes %s Seconds'); 
Смежные вопросы