5

我可以创建一个 JavaScript 日期对象:

var d=new Date('2012-08-07T07:47:46Z');
document.write(d);

这将使用浏览器的时区写入日期。但我应该能够做到(没有'Z'):

var d=new Date('2012-08-07T07:47:46');
document.write(d);

这将返回与上面相同的内容,但根据 ISO8601 标准,没有时区(例如 +01:00)且没有“Z”的字符串,应将日期视为本地时区。所以上面的第二个例子应该把日期时间写成早上 7:47。

我从服务器获取日期时间字符串,我想准确显示该日期时间。有任何想法吗?

4

2 回答 2

6

我发现这个脚本运行良好。它扩展了 Date.parse 方法。

https://github.com/csnover/js-iso8601/

Date.parse('2012-08-07T07:47:46');

但是,它不适用于new Date()构造函数。

于 2012-08-30T15:51:27.370 回答
-1

你是对的,Javascript 不能很好地与 ISO8601 配合使用。

使用此函数转换为所需的格式:

function ISODateString(d) {
  function pad(n){
    return n<10 ? '0'+n : n
  }
  return d.getUTCFullYear()+'-'
  + pad(d.getUTCMonth()+1)+'-'
  + pad(d.getUTCDate())+'T'
  + pad(d.getUTCHours())+':'
  + pad(d.getUTCMinutes())+':'
  + pad(d.getUTCSeconds())+'Z'
}
var d = new Date();
print(ISODateString(d));

取自:Mozilla

于 2012-08-07T10:33:16.667 回答