2016-01-27 2 views
1

Я пытаюсь получить оставшиеся Дни, часы и минуты до определенной даты, используя php.PHP: Дни, часы и минуты до определенной даты?

Однако я получаю очень странный вывод из моего кода, который выглядит следующим образом:

-16828 days and -11 hours and -21 minutes and -24 seconds 

будущем даты хранятся в базе данных MySQL в этом формате:

29/01/2016 7pm 

Так что я пошел вперед и сделали это:

$Draw_time = "29/01/2016 7pm"; 

$date = $Draw_time; 
$timestamp = strtotime($date); 
$new_date = date('Y-m-d a',$timestamp); 

$seconds = strtotime($new_date) - time(); 

$days = floor($seconds/86400); 
$seconds %= 86400; 

$hours = floor($seconds/3600); 
$seconds %= 3600; 

$minutes = floor($seconds/60); 
$seconds %= 60; 


echo "$days days and $hours hours and $minutes minutes and $seconds seconds"; 

Но когда я запускаю этот код, я получаю вышеуказанный странный вывод!

Я понимаю, что это может быть из-за ряда причин, но единственное, что я мог придумать, это тот факт, что я использую a в своем формате?

Не могли бы вы прокомментировать эту проблему?

+1

Возможный дубликат [PHP Обратный отсчет до даты] (http://stackoverflow.com/questions/1735252/php-countdown-to-date) –

+5

Возможный дубликат [StrToTime() не работает с дд/mm/YYYY format] (http://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm-yyyy-format) – AleFranz

+0

Какой тип mysql вы используете, что хранит '29/01/2016 7 вечера 'в качестве даты? :) –

ответ

2

Просто используйте DateTime класс вроде как

$Draw_time = "29/01/2016 7pm"; 

$date = DateTime::createFromFormat("d/m/Y ha",$Draw_time); 
$date2 = new DateTime(); 

echo $diff = $date2->diff($date)->format("%a days and %H hours and %i minutes and %s seconds"); 
0

Попробуйте

<?php 

    $Draw_time = str_replace('/', '-', "29/01/2016 7pm"); 

    $now = new DateTime(); 

    $futureDate = new DateTime($Draw_time); 

    $interval = $futureDate->diff($now); 
    echo $interval->format("%a days %h hours %i minutes %s seconds"); 
?> 
0

Попробуйте это.

$draw_time = "2016/01/29 7pm"; 
$date_time = explode(" ", $draw_time);// make separate date and time in array 
$date = strtotime($date_time[0]); // convert your date(2016/01/29) into php time 
$time = strtotime($date_time[1]); // convert your time(7pm) into php time 
$date = $date + $time; // make total time to count 
$new_Date = $date - (time()); // convert into difference from current time 
$day = $new_Date % 86400; 
$hrs = $new_Date % 3600; 
$min = $new_Date % 60; 
echo "Day= ".(date("d",$day)); 
echo " Hours= ".(date("h",$hrs)); 
echo " Minutes= ".(date("i",$min)); 
Смежные вопросы