我刚问了一个问题并得到了一个快速有用的回复,但是经过一些编辑后,这段代码似乎无法正常运行。
$firstDate = '2013-09-17 21:20:24';
echo $firstDate;
echo '<br>';
$datetime1 = new DateTime($firstDate);
$datetime2 = new DateTime($secondDate);
$interval = $datetime1->diff($datetime2);
if ($interval->a <= 7)
{
if($interval->y !== 0)
{
$elapsed = $interval->format('%y years ago');
}
else
if($interval->m !== 0)
{
$elapsed = $interval->format('%m months ago');
}
else
if($interval->a !== 0)
{
$elapsed = $interval->format('%a days ago');
}
else
if($interval->h !== 0)
{
$elapsed = $interval->format('%h hours ago');
}
else
if($interval->i !== 0)
{
$elapsed = $interval->format('%i minutes ago');
}
else
if($interval->S !== 0)
{
$elapsed = $interval->format('%S seconds ago');
}
$elapsed = str_replace(array('0 years ago', ' 0 months ago', ' 0 days ago', ' 0 hours ago', ' 0 minutes ago'), '', $elapsed);
$elapsed = str_replace(array('1 years ago', ' 1 months ago', ' 1 days ago', ' 1 hours ago', ' 1 minutes ago'), array('1 year ago', '1 month ago', ' 1 day ago', ' 1 hour ago', ' 1 minute ago'), $elapsed);
echo $elapsed;
}
else
{
echo $firstDate;
}
该代码应该提供X天前或X秒前的格式
但它会在几天后停止工作,所以我不会得到几分钟或几秒钟。为什么这不起作用?
答案 0 :(得分:2)
我建议您允许在php.ini文件中查看开发服务器的错误和通知。 How to enable notices on my development server
运行您提供的代码时,我Notice: Undefined variable: secondDate
上的line 11
和Undefined property: DateInterval::$a
上的line 23
。{/ p>
您似乎要求PHP使用不完整的数据格式化数字。
答案 1 :(得分:0)
它无法正常工作,因为您使用$interval->a
天,$interval->S
秒。正确的是$interval->days
(适用于if ($interval->days <= 7)
),$interval->d
(适用于if($interval->d !== 0)
)和$interval->s
(适用于if($interval->s !== 0)
)。
请参阅DateInterval了解正确的参数。
您可以使用此代码:
echo time_elapsed_string('2013-09-01 00:22:35');
echo time_elapsed_string('2013-09-01 00:22:35', true);
17 days ago
17 days, 1 hour, 40 minutes, 12 seconds ago
<强> Link to the function. 强>