我正在使用一些基本的日期格式,并为“Days Days”回显正确的数字。这是代码:
date_default_timezone_set('Europe/Oslo');
$dateNow = date('d/m/Y', time());
$dateStart = date('d/m/Y', strtotime('01/08/2014'));
$dateFinished = date('d-m-Y', $dateStart + strtotime("+62 days"));
$daysLeft = intval($dateFinished-$dateNow);
echo($dateNow. "<br>");
echo($dateStart. "<br>");
echo($daysLeft. "<br>");
这是回声: 2014年7月7日 2014年1月8日 -6
似乎dateStart被插入为错误的格式。我尝试了 - 和 / ,但没有更好。
我做错了什么?只是数学还是逻辑?
答案 0 :(得分:2)
$dateStart
是一个字符串。你需要这样做:
$dateStart = date('d/m/Y', strtotime('01/08/2014'));
$dateFinished = date('d-m-Y', strtotime("+62 days", strtotime('01/08/2014')));
对于更复杂的日期计算,请考虑DateTime()
。
答案 1 :(得分:2)
我建议在这种情况下使用OOP(面向对象)。它更容易编写,更容易理解。
制作一个简单而简短的剧本:
<?php
date_default_timezone_set('Europe/Oslo');
$dateNow = new DateTime('now');
$dateStart = new DateTime('2014-08-01');
$dateFinished = new DateTime($dateStart->format('Y-m-d'));
$dateFinished->add(new DateInterval('P62D'));
$daysLeft = $dateFinished->diff($dateNow);
echo($dateNow->format('d/m/Y'). "<br>");
echo($dateStart->format('d/m/Y'). "<br>");
echo($daysLeft->format('%d'). "<br>");
?>
答案 2 :(得分:1)
如果您的PHP是5.3+,那么您可以使用DateTime类并计算日期之间的差异:
$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
OR
echo "difference " . $interval->days . " days ";