文档

Java™教程
隐藏目录
日期和时间类
路径:日期 时间
课程:标准日历

日期和时间类

LocalTime

LocalTime类与其他以Local为前缀的类类似,但仅处理时间。这个类非常适用于表示基于人类的一天中的时间,例如电影时间,或当地图书馆的开放和关闭时间。它还可以用来创建一个数字时钟,如下面的示例所示:

LocalTime thisSec;

for (;;) {
    thisSec = LocalTime.now();

    // display代码的实现留给读者
    display(thisSec.getHour(), thisSec.getMinute(), thisSec.getSecond());
}

LocalTime类不存储时区或夏令时信息。

LocalDateTime

处理日期和时间(不含时区)的类是LocalDateTime,它是日期时间API的核心类之一。此类用于表示日期(月-日-年)与时间(小时-分钟-秒-纳秒)的组合,实际上是LocalDateLocalTime的组合。该类可用于表示特定事件,例如2013年8月17日下午1:10开始的美洲杯挑战者系列赛的第一场比赛。注意,这表示当地时间下午1:10。要包含时区,必须使用ZonedDateTimeOffsetDateTime,如时区和偏移类中所讨论的。

除了每个基于时间的类都提供的now方法外,LocalDateTime类还有各种of方法(或以of为前缀的方法),用于创建LocalDateTime实例。还有一个from方法,将另一个时间格式的实例转换为LocalDateTime实例。还有用于添加或减去小时、分钟、天、周和月份的方法。以下示例显示了其中的几个方法。日期时间表达式以粗体显示:

System.out.printf("当前时间: %s%n", LocalDateTime.now());

System.out.printf("1994年4月15日上午11:30: %s%n",
                  LocalDateTime.of(1994, Month.APRIL, 15, 11, 30));

System.out.printf("当前时间(来自Instant): %s%n",
                  LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()));

System.out.printf("6个月后的时间: %s%n",
                  LocalDateTime.now().plusMonths(6));

System.out.printf("6个月前的时间: %s%n",
                  LocalDateTime.now().minusMonths(6));

此代码将产生类似以下的输出:

当前时间: 2013-07-24T17:13:59.985
1994年4月15日上午11:30: 1994-04-15T11:30
当前时间(来自Instant): 2013-07-24T17:14:00.479
6个月后的时间: 2014-01-24T17:14:00.480
6个月前的时间: 2013-01-24T17:14:00.481

上一页:日期类
下一页:时区和偏移类