与前部资料相关的日期和时区问题
□ 检查列表
在提交新刊前请检查以下内容.
- 我已经读过Docs page和Troubleshooting page.
- [x]我已经搜索了 现有的问题,它们对我毫无帮助
- 我检查了错误或警告信息 很难解决
- 使用最新版本的Hexo(运行"hexo"版本以检查)
- Node.js比[最低要求版本]高(https://hexo.io/docs/#最小要求-Node-js-version)
这一问题已在下列报告:
4239号
3397号
3282号 -2063号
- 说说看
例如,我有一个职位设置如下:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
定义.yml
时区:亚洲/上海
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
标题: 你好,世界
日期:2020-09-29 23:00:00此外,我的机器处于“亚洲/上海”时区之下,这也将影响Node.js的时区。
在由js-yaml'处理的前题后,将“类似日期的字符串”转换为日期'对象:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? js-yaml = 需要("js-yaml");
jsYaml.load('date:2020-09-29 23:00:00'); (中文(简体) ). // >"Tue,2020年9月29日 格林尼治平时23:00"
注意输入被转换成协调世界时吗? 用户只用本地时间填写前置事项,而不使用协调世界时. 因此,这不是理想的行为。
因此,在处理前题时,使用了“Date#getTimezoneOffset”:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
//https://GitHub.com/hexojs/hexo-front-matter/blob/ccbdff36d151a56932418cdc6d0329d866032a1b/lib/front matter.js#L55-L62
// 转换时区
对象. keys (data). forEach( key QQ {)
cont项=数据[关键];
如果(日期项目实例){
data[key]=新日期(项目.getTime ()+(项目.getTimezoneOffset () * 60 * 1000));
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
* ;其结果将是:
2020年9月29日格林尼治平时下午3:00这是理想的行为。
然后,在pf的处理中,使用了`moment.timezone':
https://GitHub.com/hexojs/hexo/blob/557487a2f8ab0065bf94d5a9466c54034f1db17f/lib/plugins/processor.js#L80-L82 https://GitHub.com/hexojs/hexo/blob/557487a2f8ab0065bf94d5a9466c54034f1db17f/lib/plugins/processor/common.js#L51-L60
如果“配置.timezone”的配置正确,则“timezone()”前后没有区别:
2020年9月29日格林尼治平时下午3:00
/ 没有区别以下为演示: https://runkit.com/sukaw/5f732261a7aac8001a42bcc4
日期#GetTimezone Offset : -480
日期由js-yaml解析:Tue,2020年9月29日格林尼治平时23:00
页:1
时间段后日期:Tue,2020年9月29日格林尼治平时下午3:00
时间段后日期(无预补):Tue,2020年9月29日格林尼治标准时间下午3:00 以后再谈那么,一个不同的时区环境呢? 例如CI环境. 它的时区不会是 " 亚洲/上海 " 。
这是另一个演示: https://repl.it/repls/LividBewitched Controlflowgraph#index.js 互联网档案馆的存檔,存档日期2007-12-11.
日期#GetTimezoneOffset: 0 // 见? 已经不是 -480了,现在是现在了
. . . . . . .内容来源: hexojs/hexo