PHP将DATETIME转换为时间前函数,秒,分钟,小时,天等[重复]

Posted

技术标签:

【中文标题】PHP将DATETIME转换为时间前函数,秒,分钟,小时,天等[重复]【英文标题】:PHP converting DATETIME into time ago function, seconds, minutes, hours, days etc [duplicate] 【发布时间】:2015-04-22 08:32:20 【问题描述】:

我正在使用以下 php 函数将我的标准 DATETIME 结果转换为前一段时间的 facebook 样式,显示该日期的秒数、分钟数和小时数、天数等​​。

这是我的 php 函数:

<?php
function pretty_relative_time($time) 
 if ($time !== intval($time))  $time = strtotime($time); 
 $d = time() - $time;
 if ($time < strtotime(date('Y-m-d 00:00:00')) - 60*60*24*3) 
 $format = 'F j';
 if (date('Y') !== date('Y', $time)) 
$format .= ", Y";
 
 return date($format, $time);
 
 if ($d >= 60*60*24) 
 $day = 'Yesterday';
 if (date('l', time() - 60*60*24) !== date('l', $time))  $day = date('l', $time); 
 return $day . " at " . date('g:ia', $time);
 
 if ($d >= 60*60*2)  return intval($d / (60*60)) . " hours ago"; 
 if ($d >= 60*60)  return "about an hour ago"; 
 if ($d >= 60*2)  return intval($d / 60) . " minutes ago"; 
 if ($d >= 60)  return "about a minute ago"; 
 if ($d >= 2)  return intval($d) . " seconds ago"; 
 return "a few seconds ago";

?>

这里是我调用函数的地方:

echo pretty_relative_time($row1['date']);

我遇到的问题是脚本几乎可以 100% 运行,但是如果某件事在一小时内过时,即使我在几分钟或几秒钟内发布了一些内容,它也只会显示“大约一小时前”。有人可以告诉我我做错了什么吗?我的日期存储为 DATETIME 戳

【问题讨论】:

见:***.com/questions/1416697 【参考方案1】:

您可以使用此功能 100% 正确。 . .

function Myfunction ($time)
                                

                                 $time = time() - $time; // to get the time since that moment

                                 $tokens = array (
                                 31536000 => 'year',
                                 2592000 => 'month',
                                 604800 => 'week',
                                 86400 => 'day',
                                 3600 => 'hour',
                                 60 => 'minute',
                                 1 => 'second'
                                 );

                                 foreach ($tokens as $unit => $text) 
                                 if ($time < $unit) continue;
                                $numberOfUnits = floor($time / $unit);
                                return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
                             

                        

并以这种方式调用。 .

$time = strtotime($time);

$time = Myfunction($time);

【讨论】:

不错的尝试,但我讨厌复制和粘贴以及更改其值 检查@Mehreen Jamil ***.com/questions/1416697/…。它看起来与您的非常相似,但对于这个答案仍然 +1 它不相似顺便说一句。感谢 +1 变量名称与 $numberOfUnits 和 $tokens 以及许多其他名称有些相同 @AnilBaweja 在此代码中我在哪里分配我的日期时间戳值? IE。如果我的日期时间是 mysql 结果 '$row['date'] 我在哪里分配这个?

以上是关于PHP将DATETIME转换为时间前函数,秒,分钟,小时,天等[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP,从mysql加载时间戳并转换为时间前字符串

在 PHP 中将时间戳转换为时间前,例如 1 天前、2 天前……

如何将秒转换为时间格式? [复制]

js将秒转换为时分秒

PHP [PHP]将秒转换为时间(年,月,日,小时)

PHP 在PHP中将秒转换为时间字符串