php - 日期格式问题

时间:2014-07-07 11:40:48

标签: php date

我正在使用一些基本的日期格式,并为“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被插入为错误的格式。我尝试了 - / ,但没有更好。

我做错了什么?只是数学还是逻辑?

3 个答案:

答案 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 ";