Подытоживая разговор с поста tracevipin в:
Все объекты Дата основаны на time value, который миллисекунды так 1970-01-01T00: 00: 00Z так они UTC в их основе. Это отличается от UNIX, который использует значение, представляющее секунды с той же эпохи.
Метод Date.prototype.toString возвращает строку, зависящую от реализации, которая представляет время, основанное на настройках системы и смещении часового пояса клиента (ака местного времени).
Если требуется временная строка UTC ISO8601, может использоваться метод Date.prototype.toISOString. Очень легко написать «прокладку» для этих методов, если это необходимо.
И, наконец, не доверяйте Date.parse, чтобы разобрать строку. Поддержка UTC-строки формата ISO8601 указана в ES5, однако она не применяется последовательно во всех используемых браузерах. Гораздо лучше разобрать строку вручную (это не сложно, есть примеры на SO о том, как это сделать), если требуется широкая поддержка браузера (например, типичное веб-приложение).
Простой ISO8601 UTC метка времени парсер:
function dateObjectFromUTC(s) {
s = s.split(/\D/);
return new Date(Date.UTC(+s[0], --s[1], +s[2], +s[3], +s[4], +s[5], 0));
}
и вот прокладка для toISOString:
if (typeof Date.prototype.toISOString != 'function') {
Date.prototype.toISOString = (function() {
function z(n){return (n<10? '0' : '') + n;}
function p(n){
n = n < 10? z(n) : n;
return n < 100? z(n) : n;
}
return function() {
return this.getUTCFullYear() + '-' +
z(this.getUTCMonth() + 1) + '-' +
z(this.getUTCDate()) + 'T' +
z(this.getUTCHours()) + ':' +
z(this.getUTCMinutes()) + ':' +
z(this.getUTCSeconds()) + '.' +
p(this.getUTCMilliseconds()) + 'Z';
}
}());
}
Ваше время ISO заканчивается на «Z», что означает UTC (GMT). Если время на самом деле является локальным для начала, вы должны заменить «Z» на «+0530». Но если вы хотите совершить кругосветное путешествие, вы должны сохранить строчную версию в UTC. –
вы можете пояснить, что вы пытаетесь создать строковое представление, которое сохраняет исходный часовой пояс, в данном случае Zulu (Z), вместо того, чтобы повторно интерпретировать время в часовом поясе компьютера, на котором запущен код. Похоже, вы есть, но это не на 100% ясно. –