在Safari浏览器中使用Javascript的new Date()函数

12

我在使用JavaScript中的new Date()函数时遇到问题。Safari浏览器会提示"Invalid Date"。

我在jsbin上创建了一个简短的示例。

这个在其他浏览器上似乎都没有问题,但是在Safari上不行。有任何想法如何将输入值(例如2011-01-03)转换为日期对象,并使其在Safari上正常工作吗?

非常感谢!

4个回答

43

JavaScript中的日期解析行为取决于具体实现,尽管ISO8601格式最近被添加到ECMAScript第5版规范中,但并不是所有实现都支持该格式。

我建议您手动解析它,例如:

function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  return new Date(parts[0], parts[1]-1, parts[2]);
}

parseDate('2011-01-03'); // Mon Jan 03 2011 00:00:00

基本上,上面的函数匹配每个日期部分并使用Date构造函数来构建一个日期对象,注意月份参数需要以0为基础(0=Jan, 1=Feb,...11=Dec)


2

我尝试的简单解决方案: 从http://datejs.com/下载date.js文件 将其包含在你的文件中

接下来, var date = Date.parse('1970-01-12 00:00:00'); var formattedDate = date.toString('yyyy-MM-dd');


1

虽然@CMS的解决方案可能更好,但我发现使用Date.parse('2011-01-13')也是一个快速有效的解决方案。


2
在Safari(5.1.3)中似乎不起作用,我只得到NaN作为返回值。 - Elliot Winkler
好的,“Date.parse”似乎是实现特定的。 - n0nick

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接