PHP怎样表示几时几分,php获取发表时间几天前,几分种前

经常看到社交类app中关于动态发布的时间点与当前时间的换算,说麻烦也不麻烦,说简单也不简单,只是计算起来有点绕。如以当前时间为基准,自己某个时间在微博上发表一个动态,发表时间提示有多种显示,如刚刚、几分钟前、几个小时前、昨天、前天、日期等等。自己之前做过类似的时间换算,虽然不是最优,但最终效果还是达到了,下面附上源码

//function used to convert normal date & time to facebook like timeago

function timeAgo($datefrom,$dateto=-1)

{

// Defaults and assume if 0 is passed in that

// its an error rather than the epoch

if($datefrom<=0) { return "A long time ago"; }

if($dateto==-1) { $dateto = time(); }

// Calculate the difference in seconds betweeen

// the two timestamps

$difference = $dateto - $datefrom;

// If difference is less than 60 seconds,

// seconds is a good interval of choice

if($difference < 60)

{

$interval = "s";

}

// If difference is between 60 seconds and

// 60 minutes, minutes is a good interval

elseif($difference >= 60 && $difference<60*60)

{

$interval = "n";

}

// If difference is between 1 hour and 24 hours

// hours is a good interval

elseif($difference >= 60*60 && $difference<60*60*24)

{

$interval = "h";

}

// If difference is between 1 day and 7 days

// days is a good interval

elseif($difference >= 60*60*24 && $difference<60*60*24*7)

{

$interval = "d";

}

// If difference is between 1 week and 30 days

// weeks is a good interval

elseif($difference >= 60*60*24*7 && $difference <

60*60*24*30)

{

$interval = "ww";

}

// If difference is between 30 days and 365 days

// months is a good interval, again, the same thing

// applies, if the 29th February happens to exist

// between your 2 dates, the function will return

// the 'incorrect' value for a day

elseif($difference >= 60*60*24*30 && $difference <

60*60*24*365)

{

$interval = "m";

}

// If difference is greater than or equal to 365

// days, return year. This will be incorrect if

// for example, you call the function on the 28th April

// 2008 passing in 29th April 2007. It will return

// 1 year ago when in actual fact (yawn!) not quite

// a year has gone by

elseif($difference >= 60*60*24*365)

{

$interval = "y";

}

// Based on the interval, determine the

// number of units between the two dates

// From this point on, you would be hard

// pushed telling the difference between

// this function and DateDiff. If the $datediff

// returned is 1, be sure to return the singular

// of the unit, e.g. 'day' rather 'days'

switch($interval)

{

case "m":

$months_difference = floor($difference / 60 / 60 / 24 /

29);

while (mktime(date("H", $datefrom), date("i", $datefrom),

date("s", $datefrom), date("n", $datefrom)+($months_difference),

date("j", $dateto), date("Y", $datefrom)) < $dateto)

{

$months_difference++;

}

$datediff = $months_difference;

// We need this in here because it is possible

// to have an 'm' interval and a months

// difference of 12 because we are using 29 days

// in a month

if($datediff==12)

{

$datediff--;

}

$res = ($datediff==1) ? "$datediff month ago" : "$datediff

months ago";

break;

case "y":

$datediff = floor($difference / 60 / 60 / 24 / 365);

$res = ($datediff==1) ? "$datediff year ago" : "$datediff

years ago";

break;

case "d":

$datediff = floor($difference / 60 / 60 / 24);

$res = ($datediff==1) ? "$datediff day ago" : "$datediff

days ago";

break;

case "ww":

$datediff = floor($difference / 60 / 60 / 24 / 7);

$res = ($datediff==1) ? "$datediff week ago" : "$datediff

weeks ago";

break;

case "h":

$datediff = floor($difference / 60 / 60);

$res = ($datediff==1) ? "$datediff hour ago" : "$datediff

hours ago";

break;

case "n":

$datediff = floor($difference / 60);

$res = ($datediff==1) ? "$datediff minute ago" :

"$datediff minutes ago";

break;

case "s":

$datediff = $difference;

$res = ($datediff==1) ? "$datediff second ago" :

"$datediff seconds ago";

break;

}

return $res;

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值