请注意,这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