使用 java.util.Calendar 从时间戳中检索年份和月份时提供错误数据

Giving wrong data when using java.util.Calendar to retrieve year and month from timestamp

为了从给定的时间戳中获取年份和月份,我使用了这段代码。但是为此给出了错误的答案。

    long timestamp = Long.parseLong("1459239223");
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(timestamp);
    System.out.println(cal.get(Calendar.YEAR)); 

但是当使用 this 时,它会给出应有的连接答案。知道为什么会这样。

注:Java正在使用7 OpenJDK,关于Getting “unixtime” in Java问了一个类似的问题。

您为在线转换引用的网站是正确的。您已经为日历实例设置了以秒为单位的时间,即乘以 1000 将以毫秒为单位的时间转换为秒。

long timestamp = Long.parseLong("1459239223000");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
System.out.println(cal.get(Calendar.YEAR)); 

因此回答您的问题:Unix 时间定义为自 UTC 1970 年 1 月 1 日午夜以来经过的数。

你也可以这样做 -

SimpleDateFormat sdf = new SimpleDateFormat("yyyy");    
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));    
System.out.println(calendar.getWeekYear());