6月末だというのにもう完全に真夏日、いや猛暑日ですね。
これで7月、8月になったらどうなってしまうのか。正直憂鬱です。
さて本題ですが、今回はJavaの話。
ZonedDateTimeクラスに問題があった件について記載します。
このクラスは日時を扱うためのクラスであり、幅広く利用されています。
今回使っていたライブラリでも使用されていたのですが、テスト実施中に
たまたま問題が発覚しました。正直、運が良かったですね。
問題とは何なのかについて簡単に説明しますと、
「秒数に0が設定されている場合、文字列化すると省略されてしまう」です。
具体的には、以下となります。
String zonedDateTime = "2018-10-11T12:00:00Z";
ZonedDateTime z = ZonedDateTime.parse(zonedDateTime);
System.out.println(z); // return 2018-10-11T12:00Z
見事に秒の部分が消えていますね。
ログ出力などで使用するだけなら特に問題は無いのですが、
フォーマットを厳密にチェックする処理がある場合、エラー扱いされてしまいます。
今回はそれに引っ掛かりました。
このライブラリがオープンソースだったこともあり、
修正を実施することが出来たので事なきを得ましたが、
1/60の確率でエラーを吐かれるとか洒落になりませんね…。
以上