在Java中将时间戳转换为日历

时间:2017-03-07 22:57:12

标签: java date time calendar timestamp

我想从long时间戳值中获取年,月,日和小时。我发现了许多从时间戳值创建Calendar的示例,但我没有得到我想要的内容。

我写了以下

long timestamp = 1488866400;

Calendar cal = GregorianCalendar.getInstance();
cal.setTimeInMillis( timestamp );

System.out.println( cal.get( Calendar.YEAR ) );
System.out.println( cal.get( Calendar.MONTH ) );
System.out.println( cal.get( Calendar.DATE ) );

1488866400是星期二,2017年3月7日06:00:00 GMT,所以我希望上面的代码能给我一年2017,一个月2和日期7 ,但它给了我一年1970,一个月0和一天17

任何人都可以告诉我,如果我做错了什么或是否可以用不同的方式制作?

2 个答案:

答案 0 :(得分:4)

将您的时间戳乘以1000。 long timestamp = 1488866400 * 1000;

您的时间戳以秒为单位,日历使用毫秒

答案 1 :(得分:0)

试试这个:

long timestamp = 1488866400;
LocalDate date = Instant.ofEpochMilli(timestamp).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(date.getYear() );
System.out.println( date.getMonth() );
System.out.println( date.getDayOfMonth() );