我有一个约会,想要计算从现在到日期之间的时间。 另外我想以这个示例格式返回两个日期之间的时间:
4周和3天前。
这在PHP中可行吗?
我希望你们能帮助我!
答案 0 :(得分:1)
这是一个例子:
<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
将回复+2天。
答案 1 :(得分:0)
确定两个日期之间的时间(以秒为单位):
strtotime($human_readable_date);
现在减去两个日期之间的时间
$seconds = strtotime1($date1) - strtotime1($date2);
现在从这些秒开始获得实际时间 您可以使用自己的格式获取此时间,只需更改此函数中的格式类型
即可function formatSeconds( $seconds )
{
$hours = 0;
$milliseconds = str_replace( "0.", '', $seconds - floor( $seconds ) );
if ( $seconds > 3600 )
{
$hours = floor( $seconds / 3600 );
}
$seconds = $seconds % 3600;
return str_pad( $hours, 2, '0', STR_PAD_LEFT )
. gmdate( ':i:s', $seconds )
. ($milliseconds ? ".$milliseconds" : '')
;
}
答案 2 :(得分:0)
使用date_diff()和一点数学:
$now = new DateTime('now');
$date = new DateTime('2014-05-01');
// Total difference in days
$total_days = date_diff($now, $date)->format('%a');
// Get weeks
$weeks = floor($total_days / 7);
// Get days
$days = $total_days % 7;
echo $weeks . ' weeks and ' . $days . ' days ago';
输出:
3 weeks and 5 days ago
注意:
(1)date_diff()
在PHP v 5.3及以上版本中有效。
(2)您可能需要使用DateTimeZone()
指定时区OR,对于PHP版本&lt; 5.3,使用strtotime():
$now = time();
$date = strtotime('2014-05-01');
$total_days = floor(($now - $date)/60/60/24);
$weeks = floor($total_days / 7);
$days = $total_days % 7;
echo $weeks . ' weeks and ' . $days . ' days ago';
输出:
3 weeks and 5 days ago