運用中のJavaのシステムが、ある日突然おかしな日付(1970年とか)を出力する、そんなトラブルに遭遇した場合は、DateFormat オブジェクトの使い方をチェックしたほうが良いかもしれません。
class DateUtil {
static SimpleDateFormat myFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
public static String format(Date date) {
return myFormat.format(date);
}
}
うっかりこんなコードを書いてしまう人はかなり多いと思います。しかし、Format系のクラスはマルチスレッド対応していないため、Web系のユーザが多いシステムで利用された場合、ごくまれに誤動作を起こし、おかしな出力になったりします。しかもこの現象は、そこそこユーザが多いシステムでも年に数回だったりするので、やっかいです。この場合、Format系のクラスは毎回 new で生成してやる必要があります。
class DateUtil {
public static String format(Date date) {
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return myFormat.format(date);
}
}
ある意味 Java の世界では有名な JDK の不具合(?)ですが、知らない人も結構多いですね。。。
0 コメント:
コメントを投稿