一篇帖子的留言1分钟内显示 多少秒前
1小时内显示 多少分钟前
1天内 显示 多少小时前
1个月内显示 多少天前本人只能用最简单的判断来实现$posttime = "2011-07-19 23:00:00";//发帖时间$unix_time = strtotime($posttime);if (60 > $unix_time) {
//多少秒前
} else if (3600 > $unix_time) {
//多少分钟前
}......有没有更简单和高效的写法啊??
1小时内显示 多少分钟前
1天内 显示 多少小时前
1个月内显示 多少天前本人只能用最简单的判断来实现$posttime = "2011-07-19 23:00:00";//发帖时间$unix_time = strtotime($posttime);if (60 > $unix_time) {
//多少秒前
} else if (3600 > $unix_time) {
//多少分钟前
}......有没有更简单和高效的写法啊??
switch 判断这样OK?
$result = gmdate($dateformat, $timestamp + $timeoffset * 3600);
} elseif ($time > 3600) {
$result = intval($time/3600).lang('hour').lang('before');
} elseif ($time > 60) {
$result = intval($time/60).lang('minute').lang('before');
} elseif ($time > 0) {
$result = $time.lang('second').lang('before');
} else {
$result = lang('now');
}也就这样了,还能咋高效啊,hehe
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
另外, 即便PHP中有这个功能的函数, 它也是一步一步解析的, 该走的路, 无论怎样都是要走的...下面是刚写的一个实现...<?php
function time_display($time, $now) {
$seconds = $now - $time;
$suffix = ($seconds >= 0) ? '前' : '后';
$seconds = abs($seconds);
$days = floor($seconds / 86400);
if($days > 30) return date('Y-m-d H:i:s', $now);
else if($days) return $days . '天' . $suffix;
else if($hours = floor($seconds / 3600)) return $hours . '小时' . $suffix;
else if($minutes = floor($seconds / 60)) return $minutes . '分钟' . $suffix;
else if($seconds) return $seconds . '秒' . $suffix;
else return '刚才';
}
$now = time();
#35天5小时18分钟32秒前
echo time_display($now, $now - (35 * 24 * 60 * 60 + 5 * 60 * 60 + 18 * 60 + 32)) . chr(10);
#21天5小时18分钟32秒前
echo time_display($now, $now - (21 * 24 * 60 * 60 + 5 * 60 * 60 + 18 * 60 + 32)) . chr(10);
#5小时18分钟32秒前
echo time_display($now, $now - (5 * 60 * 60 + 18 * 60 + 32)) . chr(10);
#18分钟32秒前
echo time_display($now, $now - (18 * 60 + 32)) . chr(10);
#32秒前
echo time_display($now, $now - (32)) . chr(10);
#刚发表完
echo time_display($now + 0, $now) . chr(10);
#32秒后
echo time_display($now, $now + 32) . chr(10);
#18分钟32秒后
echo time_display($now, $now + 18 * 60 + 32) . chr(10);
#5小时18分钟32秒后
echo time_display($now, $now + 5 * 60 * 60 + 18 * 60 + 32) . chr(10);
#21天5小时18分钟32秒后
echo time_display($now, $now + 21 * 24 * 60 * 60 + 5 * 60 * 60 + 18 * 60 + 32) . chr(10);
#35天5小时18分钟32秒后
echo time_display($now, $now + 35 * 24 * 60 * 60 + 5 * 60 * 60 + 18 * 60 + 32) . chr(10);
#下面是输出
/*
2011-06-14 18:30:38
21天后
5小时后
18分钟后
32秒后
刚才
32秒前
18分钟前
5小时前
21天前
2011-08-24 05:07:42
*/