JavaScript-以ISO格式转换时更改小时数

JavaScript-以ISO格式转换时更改小时数,javascript,date,Javascript,Date,因此,我需要将此类日期转换为ISO格式: "05-Mar-13 17:00:00.000000" 但当我这样做的时候: var Time = (new Date("05-Mar-13 17:00:00.000000")).toISOString().replace('Z', Milliseconds); 我还有一个小时的时间: "2013-03-05T16:00:00.000000" 所以它在另一个小时改变。 我应该做些什么来避免时间的变化?ISO格式应该将时间转换为 您的浏览器假定您传递

因此,我需要将此类日期转换为ISO格式:

"05-Mar-13 17:00:00.000000"
但当我这样做的时候:

var Time = (new Date("05-Mar-13 17:00:00.000000")).toISOString().replace('Z', Milliseconds);
我还有一个小时的时间:

"2013-03-05T16:00:00.000000"
所以它在另一个小时改变。
我应该做些什么来避免时间的变化?

ISO格式应该将时间转换为

您的浏览器假定您传递日期构造函数的时间基于您的本地时间,假定比UTC晚一小时

要解决这个问题,您可以使用

new Date().getTimezoneOffset();
它将以分钟为单位返回时间偏移。在您的情况下,它将返回
-60

一个完整的例子:

function getTime() {
    var date = new Date("05-Mar-13 17:00:00.000000")
    date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return date.toISOString();
}

请注意,这可以将时间分钟设置为负值,但
Date
对象足够智能,可以通过更改小时将其再次转换为具有正分钟的新时间。

toIsoString()
不处理时区偏移。这里有帮助:请注意,我当然只在一个时区测试过这个,但我相信它应该适用于所有时区。