php计算多长时间前发的内容2个函数

下面整理了两个用来计算用户发内容的时间,这里以分钟,然后就是天数了,两个例子中,例子1只以计算昨天然后就是直接显示日期了,而后一个例子可以计算多少天前,并且文章最后对时区进行了介绍,告诉你在设置时间前一定要把php.ini时区设置好才行.

例子,多长时间前的时间函数,论坛,博客常用,代码如下:

  1. function timeFromNow($dateline) {
  2. if(emptyempty($dateline)) return false;
  3. $seconds = time() - $dateline;
  4. if ($seconds < 60){
  5. return "1分钟前";
  6. }elseif($seconds < 3600){
  7. return floor($seconds/60)."分钟前";
  8. }elseif($seconds < 24*3600){
  9. return floor($seconds/3600)."小时前";
  10. }elseif($seconds < 48*3600){
  11. return date("昨天 H:i", $dateline)."";
  12. }else{ //开源软件:phpfensi.com
  13. return date('Y-m-d', $dateline);
  14. }
  15. }
  16. echo timeFromNow(strtotime("2012-07-07 14:15:13")); //昨天 14:15
  17. echo timeFromNow(strtotime("2012-07-08 14:15:13")); //1小前

注:这里没有考虑到时区,后来在网上看到一段代码:

  1. function time_tran($the_time){
  2. $now_time = date("Y-m-d H:i:s",time()+8*60*60);
  3. $now_time = strtotime($now_time);
  4. $show_time = strtotime($the_time);
  5. $dur = $now_time - $show_time;
  6. if($dur < 0){
  7. return $the_time;
  8. }else{
  9. if($dur < 60){
  10. return $dur.'秒前';
  11. }else{
  12. if($dur < 3600){
  13. return floor($dur/60).'分钟前';
  14. }else{
  15. if($dur < 86400){
  16. return floor($dur/3600).'小时前';
  17. }else{
  18. if($dur < 259200){//3天内
  19. return floor($dur/86400).'天前';
  20. }else{
  21. return $the_time;
  22. }
  23. }
  24. }

最后补充时区:在 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');