TypeScript版本: 3.5.2
搜索条件: 3.5.2 date 21秒new Date()new Date字符串格林威治法国
码
从字符串格式日期创建新日期(1911年3月10日之前或之前)会为结果日期增加21秒。
var firstDate = new Date("1900-01-01T00:00:00.000Z").toString()
// Mon Jan 01 1900 00:09:21 GMT+0009 (Central European Standard Time)
var secondDate = new Date(firstDate).toString()
// Mon Jan 01 1900 00:09:42 GMT+0009 (Central European Standard Time)
var thirdDate = new Date(secondDate).toString()
// Mon Jan 01 1900 00:10:03 GMT+0009 (Central European Standard Time)
预期行为:
应该返回1900年1月1日星期一格林尼治标准时间+0009(中欧标准时间)
实际行为:
每次调用新的Date(string)都会增加21秒。
游乐场链接:
相关问题:
在运行时,打字稿怎么会出现错误?
接下来,将toString
小写。 通过Node(10.15.3),Firefox(67.0.4)devtools控制台和Chrome(75)devtools控制台,它可以按预期工作(来自节点输出的注释):
var firstDate = new Date("1900-01-01T00:00:00.000Z").toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)
var secondDate = new Date(firstDate).toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)
var thirdDate = new Date(secondDate).toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)
\
@ j-oliveras取决于您的编译器选项:
<\ /讽刺>
说真的,@ ruslan-volkov,此问题与TypeScript编译器无关。 只要编译器能够生成正确的JavaScript输出代码,TypeScript就没有错。
您所看到的很可能是特定JavaScript运行时引擎(或可能是多个引擎)中的错误,可能与1911年法国的日期计算有关,当时法国比GMT提前9分21秒。 但这与TypeScript无关。
考虑到创建Date
对象所遇到的所有问题,我也不确定JS运行时世界中是否有人会对此大为关注:
注意:由于浏览器的差异和不一致,强烈建议不要使用
Date
构造函数来解析日期字符串。
祝好运!
感谢您的回答和您的时间,我的天哪!
最有用的评论
\
@ j-oliveras取决于您的编译器选项:
<\ /讽刺>