日付時刻で悩んだ悩んだ
なんかorg.slim3.util.DateUtil.toStringとか使うと、TimeZone設定しててもUTCで表示されたりするのでいろいろ調べまわってました。
以下のような情報を見つけて、「えー、結構大変かもー」と思ってたのですが
Slim3 の Timezone の取り扱いについて - make world
特に自分が使いたいDateUtil.toString()がどういう動きをしてるのか気になったので、DateUtilのソースを見ると、264〜266行目で
SimpleDateFormat df = new SimpleDateFormat(pattern); df.setTimeZone(TimeZoneLocator.get()); return df.format(value);
ってなってるんですよね。
ちうことは、「TimeZoneLocator.get()したときに期待するTimeZoneが取れたらいい」ってことだと気づきまして。
そこで、war/WEB-INF/web.xmlに
<context-param> <param-name>javax.servlet.jsp.jstl.fmt.timeZone</param-name> <param-value>Asia/Tokyo</param-value> </context-param>
を追記してみたところ、期待通りの動きになりました。
でも自分が事前に設定したTimeZoneではなく、現在のスレッドにアタッチされたTimeZoneを強制的に振られるのはちょっとなぁ…意図しないところでUTCになってたらそりゃわかんないよぅorz
やっぱりどこかで
TimeZoneLocator.set(TimeZone.getTimeZone("Asia/Tokyo"));
とかするようにしたほうがいいのかなぁ?