[ Java ] SimpleDateFormat.parse は神経質な人は使うのやめましょう

Pocket

ここでは、Java の SimpleDateFormat.parse メソッドの独特な動作について掲載しています(あと、少々の愚痴も)。神経質な人が使うと汚いソースコードになりそうです。使わないほうが良いでしょう。

スポンサーリンク

SimpleDateFormat.parse メソッドの独特な動作

どのような動作をするかは、下記のサンプルコードをご覧ください。詳細はサンプル内のコメントを詳細ください。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

/*
 * false にしないと、2017/01/32 を 2017/02/01 として扱ってしまう
 * 常に false でいいのではと思う。 
 */
sdf.setLenient(false);
        
/*
 * 上記の関門を設けても、次の関門は突破されてしまいます。残念!!
 *  setLenient(false) にしても、次の文字列は
 *  2017/01/01 として、正常にDate型に変換でる。後ろのごみ(g)は無視される
 * WHY??????
 */
Date dt = sdf.parse("2017/01/1g");

以下のページにキレイにまとめられていますので、ご確認ください。本ページは、次からの愚痴がメインです。(-_-;)

このような仕様の理由

  • 昔のいい加減な Java の実装から引きずられている
  • むしろ、日本語圏だけがスタンダートから外れている
  • 東京都の豊洲の水質調査がよくわからない

などが考えられますが、神経質な人は日付文字列の妥当性検証に、このメソッドを使うのやめれば良いと思います。

最近の超絶ストレス

細かいヤツがいます。本当に細かいのです。大雑把でいい加減な私からするとあり得ない細かさです。そして、自分では気づいているか不明です(と、言うよりも意識してるかもしれません)が、作業の間違いや漏れに対して、相手を精神的に追い詰めるように批判します。


「何でですか?」

「どうしてですか?」

「30分でできるって言ったのに、もう30分過ぎましたけど!」


正気の沙汰ではありません。アヤツに責められている人を見るたびに、拳に力がこもります。もちろん、私も被害を受けています。なので、アヤツを同じように責めても良いのですが、自分への責めには弱そうです。

あまり精神的に追い込んでも良いことないので、今は大人の対応で我慢ですが、これ以上、目に余り過ぎるようだとガツンとやって大人しくさせなければ周囲の人間が先に疲弊してしまいます。できれば、本人が気づくことが一番良いのですが、現時点の様子を見ていると無理だと思われます。

妙案募集

出世欲が強くて、自分の間違いは認めずに、他人に対しては些細なことでも、精神的に追い込むように批判してくるような人間の扱い方の、何か良いアイデアないでしょうか?

体験談なんかも聞けると嬉しいです。

 

(本日の愚痴これまで)

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *