使用 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());
为了从给定的时间戳中获取年份和月份,我使用了这段代码。但是为此给出了错误的答案。
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());