2013-06-02 5 views
7

CLJ-時間を使用して、私はこれは、年、月、日である特定のタイムゾーンで日付を「パース解除する」方法はありますか?

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

を行うことによって文字列にこのバックを変換することができ

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

を行うことで、日付と時刻を解析することができますUTCタイムゾーン内のその瞬間。他のタイムゾーンを基準にして、解析されていないバージョンのDateTimeを取得するにはどうすればよいですか?たとえば、上記の例では、UTC-5タイムゾーンを指定し、 "2013-06-03"の文字列を取得します。私はfrom-time-zoneto-time-zoneで遊んでいますが、関数と引数の適切な組み合わせを見つけることができないようです。

答えて

8

あなたが使用したいと思う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" 
関連する問題