我没有得到预期的结果。基本上我只是想比较两个日期(以unix格式)并显示月/天/小时的差异/...//>
这是代码的摘录:UPDATE - 添加了更多代码
$date = mktime($hour, $min, 0, $month, $day, $year);
$now = time();
echo 'OKdate' . $date . ' now ' . $now . ' now < date ' . ($now < $date);
if($now < $date)
{
$difference = $date - $now;
$seconds2 = date('s', $difference);
$minutes2 = date('i', $difference);
$hours2 = date('G', $difference) - 1;
$days2 = date('j', $difference) - 1;
$months2 = date('n', $difference) - 1;
$years2 = date('Y', $difference) - 1970;
$timeleft = '';
if(!empty($years2))
$timeleft .= $years2 . ' year' . ($years2 > 1 ? 's ' : ' ');
if(!empty($months2))
$timeleft .= $months2 . ' month' . ($months2 > 1 ? 's ' : ' ');
if(!empty($days2))
$timeleft .= $days2 . ' day' . ($days2 > 1 ? 's ' : ' ');
if(!empty($hours2))
$timeleft .= $hours2 . ' hour' . ($hours2 > 1 ? 's ' : ' ');
if(!empty($minutes2))
$timeleft .= $minutes2 . ' minute' . ($minutes2 > 1 ? 's ' : ' ');
if(!empty($seconds2))
$timeleft .= $seconds2 . ' second' . ($seconds2 > 1 ? 's ' : ' ');
$template = $templates->get('postcountdown_post', 1, 0);
eval('$temp = "' . $template . '";');
return $temp;
}
现在,这显示在页面上:
date = 1437950400
now = 1437935682
now < date = true
奇怪的是,这是我通过回显数据得到的结果:
11 months 30 days 22 hours 05 minutes 18 seconds left
感谢您的帮助!
编辑:添加了更多代码---仅供参考:模板里面包含{$ timeleft}。所以eval只是确保{$ timeleft}被PHP评估和填充。
当前问题:代码确实有效,但不在应用程序中。出于某种奇怪的原因,我得到了 $ difference = 12076; PHP使用的日期函数给我:1年,11个月,.... 另一个奇怪的事情是:它确实适用于某些日期;但与其他人不相同,并使其成为1年。 - 或者我的代码中确实存在一个我没有看到的缺陷?
date 1437954000
now 1437942191
now < date true
diff 11809
// $...2 variables
seconds 49
mins 16
hours 21
days 30
months 11
years -1
答案 0 :(得分:2)
上面的代码在我的系统上按预期工作。但是,如果未在ini文件中设置位置,则日期函数可能会表现为stange。在PHP中,您可以使用以下命令设置服务器时区:
date_default_timezone_set ( "Europe/Brussels" );
其他时区可以在Timezone Strings
找到答案 1 :(得分:0)
试试这个:
<?php
$now = 1437950400;
$date = 1437935682;
if($now > $date) {
$difference = $now - $date;
$seconds = date('s', $difference);
$minutes = date('i', $difference);
$hours = date('G', $difference) - 1;
$days = date('j', $difference) - 1;
$months = date('n', $difference) - 1;
$years = date('Y', $difference) - 1970;
echo $years . ' Years '
. $months . ' Months '
. $days . ' Day '
. $hours . ' Hours '
. $minutes . ' Minutes '
. $seconds . ' Seconds ';
}