PHP如何查找自日期时间以来经过的时间?

PHP如何查找自日期时间以来经过的时间?

如何查找自日期时间戳(如2010-04-28 17:25:43,最后输出的文本应该是xx Minutes Ago/xx Days Ago



qq_遁去的一_1
浏览 612回答 4
4回答

弑天下

大多数答案似乎都集中在将日期从字符串转换为时间。看来你主要是在考虑把约会安排成“5天前”的格式,以此类推。对吗?我就是这样做的:$time&nbsp;=&nbsp;strtotime('2010-04-28&nbsp;17:25:43');echo&nbsp;'event&nbsp;happened&nbsp;'.humanTiming($time).'&nbsp;ago';function&nbsp;humanTiming&nbsp;($time){ &nbsp;&nbsp;&nbsp;&nbsp;$time&nbsp;=&nbsp;time()&nbsp;-&nbsp;$time;&nbsp;//&nbsp;to&nbsp;get&nbsp;the&nbsp;time&nbsp;since&nbsp;that&nbsp;moment &nbsp;&nbsp;&nbsp;&nbsp;$time&nbsp;=&nbsp;($time<1)?&nbsp;1&nbsp;:&nbsp;$time; &nbsp;&nbsp;&nbsp;&nbsp;$tokens&nbsp;=&nbsp;array&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;31536000&nbsp;=>&nbsp;'year', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2592000&nbsp;=>&nbsp;'month', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;604800&nbsp;=>&nbsp;'week', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;86400&nbsp;=>&nbsp;'day', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3600&nbsp;=>&nbsp;'hour', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60&nbsp;=>&nbsp;'minute', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=>&nbsp;'second' &nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($tokens&nbsp;as&nbsp;$unit&nbsp;=>&nbsp;$text)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($time&nbsp;<&nbsp;$unit)&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$numberOfUnits&nbsp;=&nbsp;floor($time&nbsp;/&nbsp;$unit); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$numberOfUnits.'&nbsp;'.$text.(($numberOfUnits>1)?'s':''); &nbsp;&nbsp;&nbsp;&nbsp;}}我还没测试过,但应该能用。结果会是event&nbsp;happened&nbsp;4&nbsp;days&nbsp;ago或event&nbsp;happened&nbsp;1&nbsp;minute&nbsp;ago干杯

心有法竹

希望共享php函数,这将导致语法上正确的Facebook,就像人类可读的时间格式一样。例子:echo&nbsp;get_time_ago(strtotime('now'));结果:不到1分钟前function&nbsp;get_time_ago($time_stamp){ &nbsp;&nbsp;&nbsp;&nbsp;$time_difference&nbsp;=&nbsp;strtotime('now')&nbsp;-&nbsp;$time_stamp; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($time_difference&nbsp;>=&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;365.242199) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute&nbsp;*&nbsp;60&nbsp;minutes/hour&nbsp;*&nbsp;24&nbsp;hours/day&nbsp;*&nbsp;365.242199&nbsp;days/year &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;1&nbsp;year&nbsp;or&nbsp;more &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;365.242199,&nbsp;'year'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;($time_difference&nbsp;>=&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;30.4368499) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute&nbsp;*&nbsp;60&nbsp;minutes/hour&nbsp;*&nbsp;24&nbsp;hours/day&nbsp;*&nbsp;30.4368499&nbsp;days/month &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;1&nbsp;month&nbsp;or&nbsp;more &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;30.4368499,&nbsp;'month'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;($time_difference&nbsp;>=&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;7) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute&nbsp;*&nbsp;60&nbsp;minutes/hour&nbsp;*&nbsp;24&nbsp;hours/day&nbsp;*&nbsp;7&nbsp;days/week &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;1&nbsp;week&nbsp;or&nbsp;more &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;7,&nbsp;'week'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;($time_difference&nbsp;>=&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute&nbsp;*&nbsp;60&nbsp;minutes/hour&nbsp;*&nbsp;24&nbsp;hours/day &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;1&nbsp;day&nbsp;or&nbsp;more &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24,&nbsp;'day'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;($time_difference&nbsp;>=&nbsp;60&nbsp;*&nbsp;60) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute&nbsp;*&nbsp;60&nbsp;minutes/hour &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;1&nbsp;hour&nbsp;or&nbsp;more &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60&nbsp;*&nbsp;60,&nbsp;'hour'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;60&nbsp;seconds/minute &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;means&nbsp;that&nbsp;the&nbsp;time&nbsp;difference&nbsp;is&nbsp;a&nbsp;matter&nbsp;of&nbsp;minutes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;get_time_ago_string($time_stamp,&nbsp;60,&nbsp;'minute'); &nbsp;&nbsp;&nbsp;&nbsp;}}function&nbsp;get_time_ago_string($time_stamp,&nbsp;$divisor,&nbsp;$time_unit){ &nbsp;&nbsp;&nbsp;&nbsp;$time_difference&nbsp;=&nbsp;strtotime("now")&nbsp;-&nbsp;$time_stamp; &nbsp;&nbsp;&nbsp;&nbsp;$time_units&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;floor($time_difference&nbsp;/&nbsp;$divisor); &nbsp;&nbsp;&nbsp;&nbsp;settype($time_units,&nbsp;'string'); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($time_units&nbsp;===&nbsp;'0') &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'less&nbsp;than&nbsp;1&nbsp;'&nbsp;.&nbsp;$time_unit&nbsp;.&nbsp;'&nbsp;ago'; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;($time_units&nbsp;===&nbsp;'1') &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'1&nbsp;'&nbsp;.&nbsp;$time_unit&nbsp;.&nbsp;'&nbsp;ago'; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;More&nbsp;than&nbsp;"1"&nbsp;$time_unit.&nbsp;This&nbsp;is&nbsp;the&nbsp;"plural"&nbsp;message. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TODO:&nbsp;This&nbsp;pluralizes&nbsp;the&nbsp;time&nbsp;unit,&nbsp;which&nbsp;is&nbsp;done&nbsp;by&nbsp;adding&nbsp;"s"&nbsp;at&nbsp;the&nbsp;end;&nbsp;this&nbsp;will&nbsp;not&nbsp;work&nbsp;for&nbsp;i18n! &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$time_units&nbsp;.&nbsp;'&nbsp;'&nbsp;.&nbsp;$time_unit&nbsp;.&nbsp;'s&nbsp;ago'; &nbsp;&nbsp;&nbsp;&nbsp;}}

富国沪深

我想我应该做你想做的事:function&nbsp;time2string($timeline)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$periods&nbsp;=&nbsp;array('day'&nbsp;=>&nbsp;86400,&nbsp;'hour'&nbsp;=>&nbsp;3600,&nbsp;'minute'&nbsp;=>&nbsp;60,&nbsp;'second'&nbsp;=>&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;foreach($periods&nbsp;AS&nbsp;$name&nbsp;=>&nbsp;$seconds){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$num&nbsp;=&nbsp;floor($timeline&nbsp;/&nbsp;$seconds); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeline&nbsp;-=&nbsp;($num&nbsp;*&nbsp;$seconds); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$num.'&nbsp;'.$name.(($num&nbsp;>&nbsp;1)&nbsp;?&nbsp;'s'&nbsp;:&nbsp;'').'&nbsp;'; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;trim($ret);}只需将其应用于time()和strtotime('2010-04-28 17:25:43')因此:print&nbsp;time2string(time()-strtotime('2010-04-28&nbsp;17:25:43')).'&nbsp;ago';
打开App,查看更多内容
随时随地看视频慕课网APP