ISO日期转换问题

时间:2013-07-04 17:44:51

标签: javascript jquery isodate

我有以下日期:

new Date('Sun Jun 30 2013 00:00:00 GMT+0530 (India Standard Time)')

我想将其转换为toISOString,因为我尝试了以下代码:

new Date('Sun Jun 30 2013 00:00:00 GMT+0530 (India Standard Time)').toISOString()

但它给了我以下输出:

"2013-06-29T18:30:00.000Z"

我想要以下输出:

  "2013-06-30T00:00:00.000Z"

即忽略本地时间偏移。

4 个答案:

答案 0 :(得分:1)

由于你开始使用+5:30的值,因此结果值是在前一天的UTC时间18:30。它必须减去5小时30分钟来确定UTC时间。

你说你希望价值回归2013-06-30T00:00:00.000Z - 但你必须明白,这将是完全不同的时刻Z不仅仅是漂亮的 - 它具体表明时间是UTC。

如果您想在原始时区中使用ISO格式的值,则将时区偏移量指定为字符串的一部分,例如2013-06-30T00:00:00.000+05:30

现在,您还应该了解,解析日期字符串的支持,就像您在第一行代码中所做的那样,高度依赖于浏览器。不同的浏览器支持不同的字符串输入,但不支持其他输入。您可能会发现使用您所做的输入值无处不在。

所有浏览器都不支持.toISOString()。它存在于大多数较新的浏览器中,但并非随处可见。即使它可用,它总是以UTC格式返回ISO字符串,而不是我在上面显示的扩展格式。您可以阅读this post获取完整扩展ISO字符串的选项。

答案 1 :(得分:0)

我对此并不十分肯定,但如果您想要这样的输出,我会尝试更改这样的代码。

new Date('Sun Jun 30 2013 00:00:00 GMT+0530 (India Standard Time) UTC')

toISOString

答案 2 :(得分:0)

如果您使用的是矩型库 尝试这个 :- moment.utc(new Date()。toISOString())。format();

答案 3 :(得分:-1)

你基本上可以通过

减去5:30小时
//create date object
var date = new Date('Sun Jun 30 2013 00:00:00 GMT+0530 (India Standard Time)');
//add 330(5:30 hrs) mins in ms 
date.setTime(date.getTime() + (330 * 60 * 1000));
//output in iso format
var ans  = date.toISOString()