服务器修改后,360浏览器评论,修改文章都没问题,谷歌浏览器,评论没问题,但修改文章照样时间不对,重装了谷歌浏览器,现在可以正常记录时间,是浏览器某些插件影响

以下是这些天到处搜割跟测试的记录,

一直被说说页,修改文章后,时间落后8小时困住,找了两天没一个方法有用,先把一些资料备注一下,免得又忘了

Date.php  位于var/Typecho/

设置当前期望的时区偏移

获取国际化偏移时间


这一段网上复制,看不懂,先留着,看看对修正日期有没有帮助

原来 Typecho 计算时间是用格林威治标准时间 + (后台设置的时区偏移 - 服务器的时区偏移)。说的是这句?

    /**
     * 初始化参数
     *
     * @access public
     * @param integer $time 时间戳
     */
    public function __construct($time = NULL)
    {
        $this->timeStamp = (NULL === $time ? self::time() : $time) + (self::$timezoneOffset - self::$serverTimezoneOffset);
    }

但里面出现的函数肯定是不能直接使用的,可以转个弯变成这样:

<?php
$date = date("H:i",time()+($this->options->timezone - idate("Z")));
$sunrise = date_sunrise(time(),SUNFUNCS_RET_STRING,40,120,90,$this->options->timezone/3600);//日出时间
$sunset = date_sunset(time(),SUNFUNCS_RET_STRING,40,120,90,$this->options->timezone/3600);//日没时间
?>

上述 $date 变量给你的就是你博客后台所设时区的时间了,当然你把时间格式改下的话也是没问题的。日出、日没时间代码系以北京(40°N 120°E)为标准,可根据实际情况修改相应参数,详细使用方法可以参考 PHP 手册。太阳高度角一般设置 90 度即可。

这样子,我们就成功解决了 Typecho 的时区问题


I18n.php 位于var/Typecho/

词义化时间

显示文章发表于几天前,几小时前等

下面代码是增加几月几周前,一年以上显示具体时间

/**
* 词义化时间
*
* @access public
* @param string $from 起始时间
* @param string $now 终止时间
* @return string
*/
public static function dateWord($from, $now)
{
$between = $now - $from;
/** 如果是一天 */
if ($between >= 0 && $between < 86400 && date('d', $from) == date('d', $now)) {
/** 如果是一小时 */
if ($between < 3600) {
/** 如果是一分钟 */
if ($between < 60) {
if (0 == $between) {
return _t('刚刚');
} else {
return str_replace('%d', $between, _n('刚刚', '%d秒前', $between));
}
}
$min = floor($between / 60);
return str_replace('%d', $min, _n('1分钟前', '%d分钟前', $min));
}
$hour = floor($between / 3600);
return str_replace('%d', $hour, _n('1小时前', '%d小时前', $hour));
}
/** 如果是昨天 */
if ($between > 0 && $between < 172800 
&& (date('z', $from) + 1 == date('z', $now)                             // 在同一年的情况 
|| date('z', $from) + 1 == date('L') + 365 + date('z', $now))) {    // 跨年的情况
return _t('昨天 %s', date('H:i', $from));
}
/** 如果是一个星期以内 */
if ($between > 0 && $between < 604800) {
$day = floor($between / 86400);
return str_replace('%d', $day, _n('1天前', '%d天前', $day));
}
/** 如果是一个星期以上 */
if ($between > 0 && $between < 2592000){
$week = floor($between / 648000);
return str_replace('%d', $week, _n('1周前', '%d周前', $week));
}
/** 如果是一年以内 */
if ($between > 0 && $between < 31557600){
$month = floor($between / 2629800);
return str_replace('%d', $month, _n('1个月前', '%d个月前', $month));
}
/** 如果是一年以上 */
if (date('Y', $from) == date('Y', $now)) {
return date(_t('Y年n月j日 H:i'), $from);
}
return date(_t('Y年m月d日 H:i'), $from);
}
最后修改:2020 年 10 月 13 日
如果觉得我的文章对你有用,请随意赞赏