我很好奇是否有任何好的解决方案可以准确地建立公元1000年之前的日期 - 特别是公元1 - 100年.
例如,如果我想建立一个千禧年开始的日期,我不能只做...
new Date(Date.UTC(1,0,1,0,0,0,0));
Run Code Online (Sandbox Code Playgroud)
因为它试图"聪明"并假设1是1901年,这让我...
Sun Dec 31 1900 18:00:00 GMT-0600 (CST)
Run Code Online (Sandbox Code Playgroud)
同样的事情发生在99年......
new Date(Date.UTC(99,0,1,0,0,0,0));
Run Code Online (Sandbox Code Playgroud)
变成了
Thu Dec 31 1998 18:00:00 GMT-0600 (CST)
Run Code Online (Sandbox Code Playgroud)
思考?
我更喜欢:
var d = new Date(Date.UTC(year, month, day, hour, min, sec, 0));
d.setUTCFullYear(year);
Run Code Online (Sandbox Code Playgroud)
这始终适用于所有支持的年份值。
如果你问我的话,setUTCFullYear() 调用修复了 JavaScript 的故意错误。
这是我想出的基本解决方案。如果日期早于 1000 年,我只需在构造日期时向其添加 1000,然后setUTCFullYear()再使用。
if (year >= 0 && year < 1000) {
var d = new Date(Date.UTC(year + 1000,mon,day,hour,min,sec,0));
d.setUTCFullYear(d.getFullYear() - 1000);
return d;
}
Run Code Online (Sandbox Code Playgroud)
1000 可能有点过分了,因为我只对 100 之前的日期有问题……但是,无论如何。
| 归档时间: |
|
| 查看次数: |
1494 次 |
| 最近记录: |