如何在Java 8中使用新的DateTime API获取时区?
Java 8+ 日期时间API实操:本地时间获取与时区转换
在Java 8之后,新引入的java.time包彻底解决了旧日期时间API的各种痛点,用起来顺手多了!下面给你演示两个常用场景:
1. 获取本地日期和时间
我们可以直接通过LocalTime、LocalDate和LocalDateTime这几个类来创建和组合本地时间,代码示例如下:
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; public class DateTimeDemo { public static void main(String[] args) { // 创建指定时分秒的本地时间 LocalTime localTime = LocalTime.of(9, 0, 0); // 创建指定年月日的本地日期 LocalDate localDate = LocalDate.of(2017, Month.JUNE, 3); // 组合日期和时间得到完整的本地日期时间对象 LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); // 打印结果 System.out.println("LocalDateTime:" + localDateTime); } }
运行后会输出:LocalDateTime:2017-06-03T09:00:00
2. 将时间转换为特定时区
如果需要把本地时间转换到指定时区,使用ZoneId搭配ZonedDateTime就可以轻松实现,甚至可以切换不同时区对比:
import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.Month; public class ZonedDateTimeDemo { public static void main(String[] args) { // 先创建一个本地日期时间对象 LocalDateTime localDateTime = LocalDateTime.of(2017, Month.JUNE, 3, 9, 0, 0); // 转换为GMT时区的时间 ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("GMT")); System.out.println("ZonedDateTime: " + zonedDateTime); // 也可以换成国内常用的Asia/Shanghai时区 ZonedDateTime shanghaiTime = ZonedDateTime.of(localDateTime, ZoneId.of("Asia/Shanghai")); System.out.println("Shanghai ZonedDateTime: " + shanghaiTime); } }
输出结果会明确带上时区标识,比如GMT的结果是:ZonedDateTime: 2017-06-03T09:00Z[GMT]
内容的提问来源于stack exchange,提问作者Kirill
相关产品推荐
相关产品推荐

