gpt4 book ai didi

javascript - 为什么我不能从包含毫秒的字符串创建日期?

转载 作者:行者123 更新时间:2023-11-30 07:11:42 25 4
gpt4 key购买 nike

在 javascript 中,您可以从字符串创建 Date 对象,例如

var mydate = new Date('2008/05/10 12:08:20');
console.log(mydate); //=> Sat May 10 2008 12:08:20 GMT+0200

现在尝试在字符串中使用毫秒

var mydate = new Date('2008/05/10 12:08:20:551'); // or '2008/05/10 12:08:20.551'
console.log(mydate); //=> NaN

只是出于好奇:这是为什么?

编辑:感谢您的回答,所有这些都提供了充分的解释。也许将来会支持在日期字符串中使用毫秒。在那之前我做了这个,这可能对某人有用:

function dateFromStringWithMilliSeconds(datestr){
var dat = datestr.split(' ')
,timepart = dat[1].split(/:|\./)
,datestr = dat[0]+' '+timepart.slice(0,3).join(':')
,ms = timepart[timepart.length-1] || 0
,date;
date = new Date(datestr);
date.setMilliseconds(ms);
return date;
}

最佳答案

如果您知道不同的组件,您可以对 Date 构造函数使用此重载:

var mydate = new Date(2008,6,10,12,8,20,551);

注释 6 代表月份,因为月份是从 0 到 11。

如果需要,您可以获取字符串表示并将其拆分为其组成部分,然后将它们传递给此构造函数:

var datestring = '2008/05/10 12:08:20:551';
var datearray = datestring.split(/\s|:|\//g)
var mydate = new Date(datearray[0], parseInt(datearray[1]) + 1 , datearray[2], datearray[3],datearray[4],datearray[5],datearray[6]);

this 中所述文档中,字符串重载应符合不支持毫秒的 RFC-1123(后者又符合 RFC-822)。

关于javascript - 为什么我不能从包含毫秒的字符串创建日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com