X-Y-Z日期是多少天?

时间:2009-03-17 13:56:01

标签: php datetime

鉴于某个日期,最简单的方法是确定该日期之前的天数(以PHP为单位)?我正在尝试构建一个倒计时小部件,谢谢!

6 个答案:

答案 0 :(得分:50)

<?php 
$cdate = mktime(0, 0, 0, 12, 31, 2009, 0);
$today = time();
$difference = $cdate - $today;
if ($difference < 0) { $difference = 0; }
echo "There are ". floor($difference/60/60/24)." days remaining";
?>

答案 1 :(得分:28)

扩展schnaader的答案,这是一个单行函数,它将日期字符串作为参数但只返回天数:

<?php
function days_until($date){
    return (isset($date)) ? floor((strtotime($date) - time())/60/60/24) : FALSE;
}
?>

答案 2 :(得分:8)

天分钟和秒格式:

// current time
$today = new DateTime(format_date(time(), 'custom', 'd M Y H:i:s'));
// date to which we want to compare (A Drupal field in my case).
$appt  = new DateTime(format_date($yourdate_is_timestamp, 'custom', 'd M Y H:i:s' ));

// Months
$months_until_appt = $appt->diff($today)-> m;
// days
$days_until_appt = $appt->diff($today)-> days;
// hours
$hours_until_appt = $appt->diff($today)-> h;
// minutes
$minutes_until_appt = $appt->diff($today)-> i;
// seconds
$seconds_until_appt = $appt->diff($today)-> s;

echo 'days until: ' . $days_until_appt;
echo 'hours until: ' . $hours_until_appt;
echo 'minutes until: ' . $minutes_until_appt;
echo 'seconds until: ' . $seconds_until_appt;

答案 3 :(得分:7)

不要将日期视为整数。使用您的数据库,它可以很好地支持处理日历/时间。

select datediff("2009-11-12", now())

答案 4 :(得分:7)

PHP 5.3引入了实现'diff'功能的DateTime类。 见http://www.php.net/manual/en/datetime.diff.php

答案 5 :(得分:0)

我刚刚在我的代码中遇到了这样一个实时应用,系统错误地将今天和明天视为今天。我们刚进入英国夏令时,这导致我们的应用程序出现问题。

我现在正在使用以下内容,它给出了正确的结果:

function days_away_to($dt) {
    $mkt_diff   = strtotime($dt) - time();
    return floor( $mkt_diff/60/60/24 ) + 1; # 0 = today, -1 = yesterday, 1 = tomorrow
}

当然,使用DateTime类是未来的最佳解决方案......