Typecho实现类似微博几分钟、几天前的词义化时间
在看见别人的博客评论框显示着,几分钟前,几个天前的时间显示,而不是单纯的显示一个完整的时间。于是上网一通搜索,在大佬的博客找到方法。 编辑文件 var/Typecho/I18n.php 找到如下代码。 1/** 2* 词义化时间 3* 4* @access public 5* @param string $from 起始时间 6* @param string $now 终止时间 7* @return string 8*/ 9public static function dateWord($from, $now) 10{ 11$between = $now - $from; 12/** 如果是一天 */ 13if ($between >= 0 && $between < 86400 && date('d', $from) == date('d', $now)) { 14/** 如果是一小时 */ 15if ($between < 3600) { 16/** 如果是一分钟 */ 17if ($between < 60) { 18if (0 == $between) { 19return _t('刚刚'); 20} else { 21return str_replace('%d', $between, _n('一秒前', '%d秒前', $between)); 22} 23} 24$min = floor($between / 60); 25return str_replace('%d', $min, _n('一分钟前', '%d分钟前', $min)); 26} 27$hour = floor($between / 3600); 28return str_replace('%d', $hour, _n('一小时前', '%d小时前', $hour)); 29} 30/** 如果是昨天 */ 31if ($between > 0 && $between < 172800 32&& (date('z', $from) + 1 == date('z', $now) // 在同一年的情况 33|| date('z', $from) + 1 == date('L') + 365 + date('z', $now))) { // 跨年的情况 34 return _t('昨天 %s', date('H:i', $from)); 35} 36/** 如果是一个星期 */ 37if ($between > 0 && $between < 604800) { 38$day = floor($between / 86400); 39return str_replace('%d', $day, _n('一天前', '%d天前', $day)); 40} 41/** 如果是 */ 42if (date('Y', $from) == date('Y', $now)) { 43return date(_t('Y年n月j日'), $from); 44} 45return date(_t('Y年m月d日'), $from); 46} 但是我发现官方提供的代码没有“周”和“月”,所以我动手完善了一下代码,添加了“周”和“月”,只有1年以及1年以上的时间才会显示完整时间。这样可能比较好点吧~ 可以自行考虑修改。完善后的代码如下: ...