You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:33:54