我有一些代码试图解析日期字符串.
当我这样做alert(Date("2010-08-17 12:09:36"));
它正确解析日期,一切正常,但我不能调用相关的方法Date
,如getMonth()
.
当我尝试:
var temp = new Date("2010-08-17 12:09:36");
alert(temp);
Run Code Online (Sandbox Code Playgroud)
我收到"无效日期"错误.
关于如何用新Date()解析"2010-08-17 12:09:36"的任何想法?
Top*_*era 60
日期()
有了这个,你调用一个调用的函数Date()
.它不接受任何参数并返回表示当前日期和时间的字符串.
新日期()
有了这个,你就是在创建一个新的Date实例.
您只能使用以下构造函数:
new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
Run Code Online (Sandbox Code Playgroud)
因此,2010-08-17 12:09:36
不允许使用构造函数作为参数.
编辑:new Date(dateString)
使用以下格式之一:
Dag*_*all 36
以下格式适用于所有浏览器:
new Date("2010/08/17 12:09:36");
Run Code Online (Sandbox Code Playgroud)
因此,要使yyyy-mm-dd hh:mm:ss
格式化的日期字符串完全兼容浏览器,您必须使用斜杠替换短划线:
var dateString = "2010-08-17 12:09:36";
new Date(dateString.replace(/-/g, "/"));
Run Code Online (Sandbox Code Playgroud)
小智 6
区别在于(如果我从 ECMA 文档中记得的话)事实是,它Date("xx")
不会(在某种意义上)创建一个新的日期对象(实际上它相当于调用 ( new Date("xx").toString()
).Whilenew Date("xx")
会实际创建一个新的日期对象。
了解更多信息:
参见http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf的 15.9.2
我知道这是旧的,但到目前为止更简单的解决方案是使用
var temp = new Date("2010-08-17T12:09:36");
Run Code Online (Sandbox Code Playgroud)