15 min/d

ぼうずやのにっき

java.util.TimeZone#getTimeZone(java.lang.String) が存在しない ID に GMT を返す

java.util.TimeZone#getTimeZone(java.lang.String) は見つからないとき GMT を返す。

2017-06-07 の SimpleDateFormat に続いて、また Java の古い Date まわりで踏んだ話。なぜか TimeZone がおかしくなるなあと思っていろいろ調べたら、存在しない TimeZone を指定していた。存在していないなら例外を投げてほしい。あるいは文字通り null にしてほしい。 Null Object として使ったときに困る値を使うのはやめようよ……。

回避策は事前に availableIDs などで調べておくのもありだし、TimeZone をつくってしまう (SimpleTimeZone を使うのが楽) のもありだ。

前にも書いたが、そも java.time を使えるなら、そちらを使う方がいい。