2012-05-16 5 views
20

Ho bisogno la prossima flusso:Come utilizzare l'offset del fuso orario in Nodejs?

var a = new Date(1337324400000, 'Europe/Amsterdam'); //+2h 
console.log(a); // for example 12:00 Mon ... 
a.setTimeZone('Europe/Kiev'); //+3h 
console.log(a); // 13:00 Mon ... 

C'è questa possibilità in nodejs utils api?

risposta

31

È possibile utilizzare node-time come segue:

var time = require('time'); 

var a = new time.Date(1337324400000); 

a.setTimezone('Europe/Amsterdam'); 
console.log(a.toString()); // Fri May 18 2012 09:00:00 GMT+0200 (CEST) 
a.setTimezone('Europe/Kiev'); 
console.log(a.toString()); // Fri May 18 2012 10:00:00 GMT+0300 (EEST) 
+2

Soluzione interessante ma cambia il fuso orario attuale del processo. Non accettabile per me. – Stefan

+6

@Stefan, imposta 'process.env.TZ' su un valore come 'America/New_York' o' America/Chicago' e guarda i fusi orari cambiare. – weisjohn

+1

node-time non è una buona opzione se si esegue la distribuzione su Azure, come facciamo noi. Avrai problemi nella compilazione del bridge ... Un'opzione migliore è timezone-js dato che è js puro. Funziona molto meglio. – oligofren

6

UPDATE: c'è un altro uno ora :) https://github.com/mde/timezone-js

A, la sostituzione fuso orario abilitato drop-in per lo stock JavaScript Date. L'oggetto timezoneJS.Date è compatibile API con Data JS, con gli stessi metodi getter e setter - dovrebbe funzionare correttamente con qualsiasi codice che funzioni con date JavaScript normali.


No non c'è

ma è possibile utilizzare moment.js per rendere più facile http://momentjs.com/docs/

Hai ancora bisogno di conoscerci compensare quindi sarà necessario mappatura come {"Europe/Amsterdam":2,"Europe/Kiev":3}

+0

Significa che devo creare questo file con offset e calcolare anche l'ora legale? –

+0

sì, dovrai farlo da solo, per quanto ne so, non esiste una soluzione pronta per l'uso. –

+0

grazie, ma ho bisogno di una libreria che lo farà per me. –

13

Moment.js ha ora Moment Timezone

Installare:

npm install --save moment-timezone 

Uso:

var Moment = require('moment-timezone'); 
Moment().tz('America/Los_Angeles').format(); 
1

pacchetto Visualizza fuso orario in NPM. Ha tutto il necessario integrato ed è puro JS e sembra essere la migliore libreria di gestione del fuso orario disponibile.

https://www.npmjs.com/package/timezone

http://bigeasy.github.io/timezone/

var tz = require('timezone/loaded'), 
    equal = require('assert').equal, 
    utc; 

// Get POSIX time in UTC. 
utc = tz('2012-01-01'); 

// Convert UTC time to local time in a localize language. 
equal(tz(utc, '%c', 'fr_FR', 'America/Montreal'), 
     'sam. 31 déc. 2011 19:00:00 EST'); 
  • fuso orario è una libreria MicroJS in puro JavaScript senza dipendenze che fornisce fuso orario data a conoscenza matematica e la formattazione della data.
  • Timezone utilizza il database IANA per determinare l'ora esatta dell'orologio da parete in qualsiasi parte del mondo, in qualsiasi momento, dagli albori dell'ora standardizzata.
  • Date in formato fuso orario con un'implementazione completa dei formati strftime, incluse le estensioni di data GNU.
  • Il fuso orario rappresenta l'ora in POSIX e l'ora locale utilizzando stringhe di data RFC 3999.
  • Timezone è una libreria di tempo basata su standard completa in puro JavaScript per meno di 3K minati e compressi con gzip.
0

utilizzate Moment-timezone.js, si tratta di un'opzione migliore per analizzare, validare i tempi di cambio & su diversi fusi orari.