日付時刻で悩んだ悩んだ

なんか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"));

とかするようにしたほうがいいのかなぁ?