关于JS中Date方法 日期时间的获取BUG

EnterZero
EnterZero

创作者俱乐部成员

如图所示,这里获取了文件的最后修改日期,但是打印出来的日期差的有点多,这个BUG,有什么好的方法解决呢,

四川省
浏览 286
2
4
分享
4 +1
15
2 +1
全部评论 15
 
dilu
这不是bug,这是时区问题,UTC本来就和北京时间差8小时
· 浙江省
回复
wils
wils

创作者俱乐部成员

Date没问题 但FileDateTime获取的时间比东8区在加了8小时,相当于utc时间加16小时 所以楼上大佬推荐用filesystem.stat获取。。。
· 广东省
回复
 
EnterZero
EnterZero

创作者俱乐部成员

我是使用了笨方法减了8个小时,但是吧 我觉得这个按理说不应该出现这个问题,所以放出问题,抛砖引玉一下
· 四川省
回复
 
王子陶
王子陶

@金山办公

我测试的代码是. `let date = new Date(FileSystem.stat("D:/.clang-format").mtimeMs)`. 直接用new Date构造就能保证时区正确. 如果有其他情况麻烦发一下计算时间的代码
· 广东省
回复
wils
wils

创作者俱乐部成员

console.log(FileDateTime(‘xxx’).toLocaleString())
· 广东省
回复
 
王子陶
王子陶

@金山办公

我试了一下, 没成功复现, js与操作系统的时区计算是一致的. 图里面的错误看起来是某个地方转换时间戳时多计算了一次时区, 导致时间戳相差8小时. 我测试的代码是:
· 广东省
回复
EnterZero
EnterZero

创作者俱乐部成员

ActiveWorkbook.BuiltinDocumentProperties.Item(12).Value 我是直接获取的工作簿的属性来获取的时间
· 四川省
回复
 
wils
wils

创作者俱乐部成员

linux版也是一样的问题。。。
· 广东省
回复