请注意,new Timestamp(2012, 1, 1, 0, 0, 0, 0); 已弃用,我认为这是您问题的根源!
请改用Timestamp startTimestamp = new Timestamp(System.currentTimeMillis());。
另外,请注意startTimestamp.getYear() 也已弃用!
已弃用。从 JDK 1.1 版开始,替换为
日历.get(日历.年)。
返回此 Date 对象表示的月份中的哪一天。这
返回的值介于 1 到 31 之间,表示月份中的某天
包含或开始于由此代表的时间瞬间
日期对象,以当地时区解释。
考虑这个例子(基于你的原始代码):
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