在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;
}
答案 0 :(得分:5)
如果您知道不同的组件,则可以将此重载用于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]);
答案 1 :(得分:4)
<强> dateString 强>
表示日期的字符串值。该字符串应采用解析方法(IETF-compliant RFC 1123 timestamps)识别的格式。
此格式似乎不包含日期中的毫秒数...最好只定义没有ms的日期,然后再调用setMilliseconds()
。
答案 2 :(得分:1)
ECMA-262标准,第15.9.1.15节确实指定了日期字符串格式的毫秒数。我猜测浏览器开发人员无法实现它。