从java.util.Date(时间戳),我怎样才能得到一天中的小时?
在joda.time中我使用getHourOfDay()。
答案 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();
你注意到的相当冗长,但原因很简单,Date
是sort 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);