2016-09-02 1 views
1

getTime() Это возврат локальных или UTC миллисекунд?как преобразовать дату в utc миллисекунды с часовым поясом в javascript

var startDate = new Date(); 
var val = (startDate.getTime()).toString(); 

Ниже логика возвратит UTC millisecords:

var startDate = new Date(); 
var val = (new Date(Date.UTC(
    startDate.getFullYear(), 
    startDate.getMonth(), 
    startDate.getDate(), 
    startDate.getHours(), 
    startDate.getMinutes(), 
    startDate.getSeconds() 
))).getTime().toString(); 

нужен скрипт для преобразования даты в UTC миллисекунды с часовым поясом, как America/Los_Angeles

+0

, а не заново изобретать колесо - вы можете захотеть посмотрите [момент часовой пояс] (http://momentjs.com/timezone/) ... * shh, не говорите никому, я дал вам ссылку на внешнюю библиотеку * –

+0

['getTime: число, представляющее миллисекунды, прошедшие между 1 января 1970 года 00:00:00 UTC и указанной датой.] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) – Xotic750

+0

'Необходимый скрипт для преобразования даты в UTC миллисекунды с часовым поясом, например America/Los_Angeles'. Что вы имеете в виду? UTC - это то же самое время по всему миру. Можете ли вы привести некоторые фактические примеры ваших исходных данных и то, что вы ожидаете? – Xotic750

ответ

1

Здесь вы создаете новую дату:

var startDate = new Date(); 

Это настроено на текущий часовой пояс вашего браузера, здесь mi НЭ Турция:

Fri Sep 02 2016 17:50:06 GMT+0300 (Turkish Summer Time) 

Если преобразовать эту строку Fri Sep 02 2016 17:50:06 GMT+0300 в Millis тогда вы будете иметь значение с GMT + 0300:

Date.parse("Fri Sep 02 2016 17:50:06 GMT+0300") 
>> 1472827806000 

Здесь вы можете создать свой объект даты с другим часовым поясом и получить Миллис из него, скажем, это America/Los_Angeles:

1) дата создания объекта

var d = new Date(); 

2) Получить локальное значение времени

var localTime = d.getTime(); 

3) Получите местное смещение

var localOffset = d.getTimezoneOffset() * 60000; 

4) Получение UTC

var utc = localTime + localOffset; 

5) Получите адресата смещения, для Америки/Loas_Angeles - UTC -7

var offset = -7; 
var ala = utc + (3600000*offset); 

6) Теперь ala содержит значение milis of America/Los_Angeles. Наконец преобразовать его в новый объект даты, если это необходимо:

var nd = new Date(ala); 

Final: Теперь вы можете получить миллисекунды новой даты объекта:

nd.getTime(); 
//or 
ala;