Date型の基礎知識。

基本

ミリ秒まで扱う

「Date」という単語から考えると、
年月日と考えてしまうがそうではない。
java.util.Dateはミリ秒まで扱う。

ミリ秒まで一致しないとequalにはならない

Date型は時間をミリ秒で扱っているため、ミリ秒まで比較される。
compareTo()も同様。

よって日付(年月日)が同じかどうか調べたい場合は、
equal()ではなく別の方法が必要。

例.Date型の比較
Date firstDate = new Date();
Date secondDate = new Date(firstDate.getTime() + 1); //1ミリ秒進める
  
assertFalse(firstDate.equals(secondDate));
  
assertTrue(firstDate.compareTo(secondDate) < 0);
assertFalse(firstDate.compareTo(secondDate) == 0);
assertFalse(firstDate.compareTo(secondDate) > 0);

java.sql.Dateではない

Eclipseなどの補完を利用すると
インポートの候補に上がってしまうので間違えやすいが、
もちろん別物。

こちらはパッケージ名のごとく
SQLにおける日付型。

ただし、java.util.Dateを継承しているためコンパイルエラーにならない。
よって、注意が必要。

PR