[Clojure] clj-time を使う
java.util.Date でフォーマットとか考えると途端に面倒くさくなったので clj-timeを使ってみた。
楽だ。
ただ、少し調べた事もあったのでメモ。
日時と日でクラスが違う
(require '[clj-time.core :as t] '[clj-time.format :as tf] '[clj-time.local :as tl])) ; ローカルタイムゾーンの現在の日時を返す (tl/local-now) => #<DateTime 2013-11-11T21:07:30.394+09:00> ; ローカルタイムゾーンの日付を返す (t/today) => #<LocalDate 2013-11-11>
formatter で指定可能なフォーマット書式
これは元の Java の Joda-Time の方を見ると下記情報がある。
Joda-Time - Java date and time API - Formatting
タイムゾーンの文字列表記取得
結局使わなかったのだが、日時まで欲しい時は(from|to)-time-zone でタイムゾーンを指定して取る必要がある。その時の指定方法として t/time-zone-for-id か t/time-zone-for-offset どちらかを使えるのだが、offset の指定の仕方が良く分からず、id の方を探してみると java.util.TimeZoneで以下の方法で取得可能なのが分かった。
(import java.util.TimeZone) => java.util.TimeZone (.getID (TimeZone/getDefault)) => "Asia/Tokyo"
現在のタイムゾーンでの Java での指定方法が分かれば後は使うだけ。
(t/to-time-zone (t/now) (t/time-zone-for-id "Asia/Tokyo")) #<DateTime 2013-11-11T21:16:14.187+09:00>