[英]How to convert yyyy-MM-dd HH:mm:ss to yyyy-MM-ddTHH:mm:ssZ?
[英]Convert YYYY-MM-DD HH-MM-SS to … months/days/minutes/hours/seconds ago
该问题基于另一个StackOverFlow 问题 ,该问题题为PHP中的timestamp转换为time ago,例如1天前,2天前…
被打勾的答案无法解释,但显示此功能:
function time_elapsed_string($ptime)
{
$etime = time() - $ptime;
if ($etime < 1)
{
return '0 seconds';
}
$a = array( 365 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
$a_plural = array( 'year' => 'years',
'month' => 'months',
'day' => 'days',
'hour' => 'hours',
'minute' => 'minutes',
'second' => 'seconds'
);
foreach ($a as $secs => $str)
{
$d = $etime / $secs;
if ($d >= 1)
{
$r = round($d);
return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago';
}
}
}
我使用的时间格式是YYYY-MM-DD HH-MM-SS ,例如: 2015-01-21 19:23:09 。
我的尝试:
echo $target_time = time_elapsed_string(strtotime("2015-01-21 19:23:09"));
它给:
45年前。
任何时候都会给45岁。 我不知道该功能的工作原理,但是可以提供任何帮助。
使用PHP的DateTime
和DateDiff
对象可以轻松完成此操作
$datetime1 = new DateTime();
$datetime2 = new DateTime("2015-01-21 19:23:09");
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
有关要传递的格式字符串的完整说明,请参阅文档 。
我从http://timeago.yarp.com找到了一个简单有效的解决方案:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://timeago.yarp.com/jquery.timeago.js"></script>
<script>
jQuery(document).ready(function() {
jQuery("abbr.timeago").timeago();
});
</script>
<abbr class="timeago" title="2015-01-21T21:30:00"></abbr>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.