如何使用java.time从时间戳中获取HourOfDay?

时间:2015-01-19 10:22:25

标签: java-8 java-time

从java.util.Date(时间戳),我怎样才能得到一天中的小时?

在joda.time中我使用getHourOfDay()。

1 个答案:

答案 0 :(得分:3)

有多种解决方案。如果您希望使用以下java.time中的Java 8类,则需要将Date转换为其中一个 DateTime 类。以下内容可用于将Date转换为ZonedDateTime,然后您可以获得小时:

Date date = new Date();

// Convert to java 8 ZonedDateTime
Date date = new Date();
final ZonedDateTime dateTime = date.toInstant()
        .atZone(ZoneId.systemDefault());

// Get the hour
int hour = dateTime.getHour();

你注意到的相当冗长,但原因很简单,Datesort of an Instant

  

尽管有名称,java.util.Date代表时间线上的瞬间,而不是“日期”。存储在对象中的实际数据是自1970-01-01T00:00Z(GMT / UTC 1970年初午夜)以来的长时间毫秒数。

另一种方法是从Calendar实例中获取字段。

final Calendar instance = Calendar.getInstance();
instance.setTime(date);
final int hourOfDay = instance.get(Calendar.HOUR_OF_DAY);