PHP如何查找自日期时间以来经过的时间?如何查找自日期时间戳(如2010-04-28 17:25:43,最后输出的文本应该是xx Minutes Ago/xx Days Ago
4 回答
弑天下
TA贡献1818条经验 获得超8个赞
$time = strtotime('2010-04-28 17:25:43');echo 'event happened '.humanTiming($time).' ago';function humanTiming ($time){ $time = time() - $time; // to get the time since that moment $time = ($time<1)? 1 : $time; $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':''); }}
event happened 4 days ago
event happened 1 minute ago
心有法竹
TA贡献1866条经验 获得超5个赞
echo get_time_ago(strtotime('now'));
function get_time_ago($time_stamp){ $time_difference = strtotime('now') - $time_stamp; if ($time_difference >= 60 * 60 * 24 * 365.242199) { /* * 60 seconds/minute * 60 minutes/hour * 24 hours/day * 365.242199 days/year * This means that the time difference is 1 year or more */ return get_time_ago_string($time_stamp, 60 * 60 * 24 * 365.242199, 'year'); } elseif ($time_difference >= 60 * 60 * 24 * 30.4368499) { /* * 60 seconds/minute * 60 minutes/hour * 24 hours/day * 30.4368499 days/month * This means that the time difference is 1 month or more */ return get_time_ago_string($time_stamp, 60 * 60 * 24 * 30.4368499, 'month'); } elseif ($time_difference >= 60 * 60 * 24 * 7) { /* * 60 seconds/minute * 60 minutes/hour * 24 hours/day * 7 days/week * This means that the time difference is 1 week or more */ return get_time_ago_string($time_stamp, 60 * 60 * 24 * 7, 'week'); } elseif ($time_difference >= 60 * 60 * 24) { /* * 60 seconds/minute * 60 minutes/hour * 24 hours/day * This means that the time difference is 1 day or more */ return get_time_ago_string($time_stamp, 60 * 60 * 24, 'day'); } elseif ($time_difference >= 60 * 60) { /* * 60 seconds/minute * 60 minutes/hour * This means that the time difference is 1 hour or more */ return get_time_ago_string($time_stamp, 60 * 60, 'hour'); } else { /* * 60 seconds/minute * This means that the time difference is a matter of minutes */ return get_time_ago_string($time_stamp, 60, 'minute'); }}function get_time_ago_string($time_stamp, $divisor, $time_unit){ $time_difference = strtotime("now") - $time_stamp; $time_units = floor($time_difference / $divisor); settype($time_units, 'string'); if ($time_units === '0') { return 'less than 1 ' . $time_unit . ' ago'; } elseif ($time_units === '1') { return '1 ' . $time_unit . ' ago'; } else { /* * More than "1" $time_unit. This is the "plural" message. */ // TODO: This pluralizes the time unit, which is done by adding "s" at the end; this will not work for i18n! return $time_units . ' ' . $time_unit . 's ago'; }}
富国沪深
TA贡献1790条经验 获得超9个赞
function time2string($timeline) { $periods = array('day' => 86400, 'hour' => 3600, 'minute' => 60, 'second' => 1); foreach($periods AS $name => $seconds){ $num = floor($timeline / $seconds); $timeline -= ($num * $seconds); $ret .= $num.' '.$name.(($num > 1) ? 's' : '').' '; } return trim($ret);}
time()
strtotime('2010-04-28 17:25:43')
print time2string(time()-strtotime('2010-04-28 17:25:43')).' ago';
- 4 回答
- 0 关注
- 603 浏览
添加回答
举报
0/150
提交
取消