2012-11-09 13 views
40

Tworzę harmonogram dla czegoś na wschodnim wybrzeżu, i muszę utworzyć datę, która zawsze zwraca obiekt daty/znacznik czasu na ten czas.Ignorowanie stref czasowych podczas tworzenia daty w javascript/instantjs

Tak więc, jeśli otworzę stronę w Paryżu o 18:00, "new myDate()" powinien wrócić 12:00.

Jakieś sugestie na temat tego, jak mogę to zrobić z chwilą JS lub po prostu JavaScript? Końcowym rezultatem powinien być obiekt Date języka javascript.

Odpowiedz

77

Możesz to zrobić za pomocą funkcji moment.js, używając moment.utc().

http://momentjs.com/docs/#/parsing/utc/

moment([2011, 10, 8, 5]).format(); // different output based on timezone 
moment.utc([2011, 10, 8, 5]).format(); // same output for all timezones 

Sposób moment.utc dzieła jest przez ustawienie flagi wewnętrznie używać getUTCMinutes zamiast getMinutes, więc wyjście jest taki sam we wszystkich strefach czasowych.

+1

Ach, nie widzi tego. Jak dodać do tego odpowiednie przesunięcie strefy czasowej? Udało mi się to zrobić za pomocą js, ale wolałbym, by momentjs. Próbowałem to: 'new Date (moment.utc(). Add ('minutes', -moment(). Zone()). Unix() * 1000)', ale data jest 5 godzin. – kimpettersen

+0

Możesz go sfałszować, nie używając strefy czasowej. Więc jeśli data musi być o 5 rano, po prostu zrób moment.utc ([rok, miesiąc, data, 5]), a następnie sformatuj i pokaż to. Jeśli próbujesz wyświetlić datę w konkretnej strefie czasowej, staje się to trudniejsze, ponieważ musisz wyliczyć przesunięcie w oparciu o czasy DST dla danej strefy czasowej. – timrwood

+0

Poeksperymentuj z moment.utc(). Strefą (5), aby umożliwić momentjsom wewnętrzną kompensację strefy czasowej. – zacharydl

9

Jeśli chcesz, aby strefa czasowa całkowicie ignorowane, można użyć następujące podejście:

var firstDayStr = '29 January 2014'; 
    var startAtTime = '10:01:02 AM'; 
    var localFormat = 'YYYY-MM-DD[T]HH:mm:ss'; 

    var m = moment(firstDayStr + ' ' + startAtTime).format(localFormat); 

    console.log(m); 

wyjściowa:

2014-01-29T10:01:02 
Powiązane problemy