2013-06-02 18 views
7

Utilizzando CLJ-tempo, posso analizzare una data e l'ora facendoCome posso "annullare" una data in un determinato fuso orario?

(def timestamp (format/parse (formatters :date-time-no-ms) 
          "2013-06-03T23:00:00-0500")) 
;=> #<DateTime 2013-06-04T04:00:00.000Z> 

posso convertire questo in una stringa facendo

(unparse (formatters :year-month-day) timestamp) 
;=> "2013-06-04" 

Questo è l'anno, mese e giorno di quel momento all'interno del fuso orario UTC. Come posso ottenere una versione non analizzata di DateTime relativa a un altro fuso orario? Ad esempio, per l'esempio sopra, voglio specificare il fuso orario UTC-5 e ottenere una stringa di "2013-06-03". Ho giocato con from-time-zone e to-time-zone ma non riesco a trovare la giusta combinazione di funzioni e argomenti.

risposta

8

Ti consigliamo di utilizzare clj-time.format/with-zone:

(require '(clj-time [core :as time] [format :as timef])) 

(timef/unparse (timef/with-zone (:date-time-no-ms timef/formatters) 
        (time/time-zone-for-id "America/Chicago")) 
       (time/now)) 
;= "2013-06-02T15:20:03-05:00" 
Problemi correlati