下面整理了两个用来计算用户发内容的时间,这里以分钟,然后就是天数了,两个例子中,例子1只以计算昨天然后就是直接显示日期了,而后一个例子可以计算多少天前,并且文章最后对时区进行了介绍,告诉你在设置时间前一定要把php.ini时区设置好才行.
例子,多长时间前的时间函数,论坛,博客常用,代码如下:
- function timeFromNow($dateline) {
- if(emptyempty($dateline)) return false;
- $seconds = time() - $dateline;
- if ($seconds < 60){
- return "1分钟前";
- }elseif($seconds < 3600){
- return floor($seconds/60)."分钟前";
- }elseif($seconds < 24*3600){
- return floor($seconds/3600)."小时前";
- }elseif($seconds < 48*3600){
- return date("昨天 H:i", $dateline)."";
- }else{ //开源软件:Vevb.com
- return date('Y-m-d', $dateline);
- }
- }
- echo timeFromNow(strtotime("2012-07-07 14:15:13")); //昨天 14:15
- echo timeFromNow(strtotime("2012-07-08 14:15:13")); //1小前
注:这里没有考虑到时区,后来在网上看到一段代码:
- function time_tran($the_time){
- $now_time = date("Y-m-d H:i:s",time()+8*60*60);
- $now_time = strtotime($now_time);
- $show_time = strtotime($the_time);
- $dur = $now_time - $show_time;
- if($dur < 0){
- return $the_time;
- }else{
- if($dur < 60){
- return $dur.'秒前';
- }else{
- if($dur < 3600){
- return floor($dur/60).'分钟前';
- }else{
- if($dur < 86400){
- return floor($dur/3600).'小时前';
- }else{
- if($dur < 259200){//3天内
- return floor($dur/86400).'天前';
- }else{
- return $the_time;
- }
- }
- }
最后补充时区:在 php.ini 中,默认是 date.timezone = UTC,修改为中国时区,修改为 date.timezone = PRC,如果直接写 GMT 格式的,是 date.timezone = Etc/GMT+8.
另外,也可以在 PHP 页面头中设置:
date_default_timezone_set('PRC');
测试:echo date('Y-m-d H:i:s');
新闻热点
疑难解答