1

我有以下日期:

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

4 回答 4

2

由于您从 +5:30 的值开始,因此结果值在前一天 18:30 UTC 是完全合理的。它必须减去 5 小时 30 分钟才能确定 UTC 时间。

您说您希望将价值恢复为2013-06-30T00:00:00.000Z-但您必须理解,那将是一个完全不同的时刻。这Z不仅仅是为了漂亮 - 它特别表明时间是 UTC。

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

现在,您还应该了解,正如您在第一行代码中所做的那样,对解析日期字符串的支持高度依赖于浏览器。不同的浏览器支持不同的字符串输入,但不支持其他的。您可能会发现使用您所做的输入值并不适用于任何地方。

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

于 2013-07-04T18:46:49.763 回答
0

我不太确定这一点,但如果你想要这样的输出,我会尝试像这样更改代码。

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

toISOString

于 2013-07-04T18:03:57.703 回答
0

如果您正在使用时刻库​​,请尝试以下操作:

moment.utc(new Date().toISOString()).format();
于 2020-05-25T04:53:45.373 回答
-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()
于 2013-07-04T18:22:16.200 回答