注意してください、それnew Timestamp(2012, 1, 1, 0, 0, 0, 0);
は非推奨であり、私はあなたの問題の根源だと思います!
Timestamp startTimestamp = new Timestamp(System.currentTimeMillis());
代わりに使用してください。
startTimestamp.getYear()
また、非推奨であることにも注意してください。
非推奨。JDK バージョン 1.1 以降、Calendar.get(Calendar.YEAR) に置き換えられました。
この Date オブジェクトが表す日を返します。返される値は 1 ~ 31 で、ローカル タイム ゾーンで解釈される、この Date オブジェクトによって表される時点を含む、またはその時点から始まる日を表します。
次の例を考えてみましょう (元のコードに基づく):
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, 1);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Timestamp startTimestamp = new Timestamp(cal.getTimeInMillis());
System.out.println("startTimestamp = " + startTimestamp);
Calendar cal2 = Calendar.getInstance();
cal2.setTimeInMillis(startTimestamp.getTime());
System.out.println("Year = " + cal2.get(Calendar.YEAR));
}
出力が生成されます。
startTimestamp = 2012-01-01 12:00:00.0
Year = 2012