TimeAgo 函数返回负秒数
TimeAgo function returning negative seconds
我有一个功能可以 returns 时间发布的时间,但似乎有点问题。第一次,$timeAgo1 工作得很好,但第二次,$timeAgo2 似乎 return 负秒。这是怎么回事?
<?php
//*****************************************************START OF FUNCTION
function timeAgo($time_ago) {
$time_ago = strtotime($time_ago);
$cur_time = time();
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed ;
$minutes = round($time_elapsed / 60 );
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400 );
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640 );
$years = round($time_elapsed / 31207680 );
echo $seconds."<br>";
if ($seconds <= 60) {
return "just now";
} //end of if ($seconds <= 60)
else if ($minutes <=60) {
if ($minutes == 1) {
return "one minute ago";
} //end of else if ($minutes <=60)
else {
return "$minutes minutes ago";
} //end of else not ($minutes == 1)
} //end of else if ($minutes <= 60)
else if ($hours <= 24) {
if ($hours == 1) {
return "an hour ago";
} //end of if ($hours == 1)
else {
return "$hours hours ago";
} //end of else not ($hours == 1)
} //end of else if ($hours <= 24)
else if ($days <= 7) {
if ($days == 1) {
return "yesterday";
} //end of else if ($days <= 7)
else {
return "$days days ago";
} //end of else not ($days == 1)
} //end of else if ($days <= 7)
else if ($weeks <= 4.3) {
if ($weeks == 1) {
return "a week ago";
} //end of if ($weeks == 1)
else {
return "$weeks weeks ago";
} //end of else not ($weeks == 1)
} //end of else if ($weeks <= 4.3)
else if ($months <= 12) {
if ($months == 1) {
return "a month ago";
} //end of if ($months == 1)
else {
return "$months months ago";
} //end of else not ($months == 1)
} //end of else if ($months <= 12)
else {
if ($years == 1) {
return "one year ago";
} //end of if ($years == 1)
else {
return "$years years ago";
} //end of else not ($years == 1)
} //end of last else
} //end of function timeAgo($time_ago)
//*****************************************************END OF FUNCTION
$date1 = "2016-02-10";
$time1 = "22:41:58";
$date2 = "2016-02-12";
$time2 = "15:25:57";
$timeAgo1 = timeAgo($date1.$time1);
$timeAgo2 = timeAgo($date2.$time2);
echo $timeAgo1."<br>".$timeAgo2;
?>
这可能与您的服务器有关,因为我使用了 2 个不同的服务器,结果是
166733
20094
2 days ago
6 hours ago
您的服务器可能位于其他地方,因此 time();
函数显示的时间戳与您预期的不同。
第二次的时间戳是 1455290705 所以你的服务器可能位于 is/was 超过 1455290705 的地方。
将脚本开头的时区设置为与您要检查的原始日期相同的日期,例如:
date_default_timezone_set('America/Los_Angeles');
http://php.net/manual/en/function.date-default-timezone-set.php
我有一个功能可以 returns 时间发布的时间,但似乎有点问题。第一次,$timeAgo1 工作得很好,但第二次,$timeAgo2 似乎 return 负秒。这是怎么回事?
<?php
//*****************************************************START OF FUNCTION
function timeAgo($time_ago) {
$time_ago = strtotime($time_ago);
$cur_time = time();
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed ;
$minutes = round($time_elapsed / 60 );
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400 );
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640 );
$years = round($time_elapsed / 31207680 );
echo $seconds."<br>";
if ($seconds <= 60) {
return "just now";
} //end of if ($seconds <= 60)
else if ($minutes <=60) {
if ($minutes == 1) {
return "one minute ago";
} //end of else if ($minutes <=60)
else {
return "$minutes minutes ago";
} //end of else not ($minutes == 1)
} //end of else if ($minutes <= 60)
else if ($hours <= 24) {
if ($hours == 1) {
return "an hour ago";
} //end of if ($hours == 1)
else {
return "$hours hours ago";
} //end of else not ($hours == 1)
} //end of else if ($hours <= 24)
else if ($days <= 7) {
if ($days == 1) {
return "yesterday";
} //end of else if ($days <= 7)
else {
return "$days days ago";
} //end of else not ($days == 1)
} //end of else if ($days <= 7)
else if ($weeks <= 4.3) {
if ($weeks == 1) {
return "a week ago";
} //end of if ($weeks == 1)
else {
return "$weeks weeks ago";
} //end of else not ($weeks == 1)
} //end of else if ($weeks <= 4.3)
else if ($months <= 12) {
if ($months == 1) {
return "a month ago";
} //end of if ($months == 1)
else {
return "$months months ago";
} //end of else not ($months == 1)
} //end of else if ($months <= 12)
else {
if ($years == 1) {
return "one year ago";
} //end of if ($years == 1)
else {
return "$years years ago";
} //end of else not ($years == 1)
} //end of last else
} //end of function timeAgo($time_ago)
//*****************************************************END OF FUNCTION
$date1 = "2016-02-10";
$time1 = "22:41:58";
$date2 = "2016-02-12";
$time2 = "15:25:57";
$timeAgo1 = timeAgo($date1.$time1);
$timeAgo2 = timeAgo($date2.$time2);
echo $timeAgo1."<br>".$timeAgo2;
?>
这可能与您的服务器有关,因为我使用了 2 个不同的服务器,结果是
166733
20094
2 days ago
6 hours ago
您的服务器可能位于其他地方,因此 time();
函数显示的时间戳与您预期的不同。
第二次的时间戳是 1455290705 所以你的服务器可能位于 is/was 超过 1455290705 的地方。
将脚本开头的时区设置为与您要检查的原始日期相同的日期,例如:
date_default_timezone_set('America/Los_Angeles');
http://php.net/manual/en/function.date-default-timezone-set.php