PHP将时间戳转换为刚刚、N分钟前、今天几点几分、昨天几点几分...
使用PHP语言,将时间戳转换为类似新浪微博的时间的表示方法。
要求转换规则:
要求转换规则:
- 1分钟以内: 刚刚
- 1小时以内:N分钟前
- 当天以内:今天 N点N分(如:今天 10:10)
- 昨天时间:昨天 N点N分(如:昨天 10:10)
- 当年以内:N月N日 N点N分(如:11月22日 10:11)
- 今年以前:N年N月N日 N点N分(如:2012年12月21日 22:23)
没有找到相关结果
已邀请:
1 个回复
匿名用户
赞同来自:
<?php date_default_timezone_set('PRC'); // 设置时区,如果已经设置可以删除 function timeFormat( $timestamp ) { $curTime = time(); $space = $curTime - $timestamp; if($space < 60) { // 一分钟以内 $string = "刚刚"; return $string; } elseif( $space < 3600 ) { // 一小时前之内 $string = floor($space / 60) . "分钟前"; return $string; } $curtimeArray = getdate($curTime); $timeArray = getDate($timestamp); if( $curtimeArray['year'] == $timeArray['year'] ) { // 同一年 if($curtimeArray['yday'] == $timeArray['yday']) { // 同一天 $format = "%H:%M"; $string = strftime($format, $timestamp); return "今天 {$string}"; } elseif(($curtimeArray['yday'] - 1) == $timeArray['yday']) { // 昨天 $format = "%H:%M"; $string = strftime($format, $timestamp); return "昨天 {$string}"; } else { $string = sprintf("%d月%d日 d:d", $timeArray['mon'], $timeArray['mday'], $timeArray['hours'], $timeArray['minutes']); return $string; } } $string = sprintf("%d年%d月%d日 d:d", $timeArray['year'], $timeArray['mon'], $timeArray['mday'], $timeArray['hours'], $timeArray['minutes']); return $string; }使用示例:echo sprintf("%d: %s\n", time(), timeFormat(time())); echo sprintf("%d: %s\n", time()-720, timeFormat(time()-720)); echo sprintf("%d: %s\n", time()-10800, timeFormat(time()-10800)); echo sprintf("%d: %s\n", time()-86400, timeFormat(time()-86400)); echo sprintf("%d: %s\n", time()-86400*123, timeFormat(time()-86400*123)); echo sprintf("%d: %s\n", time()-86400*400, timeFormat(time()-86400*400));输出结果: