行业资讯 2025年08月6日
0 收藏 0 点赞 201 浏览 2922 个字
摘要 :

文章目录 1.Instant、OffsetDateTime和ZonedDateTime类 2. 将字符串解析为UTC中的OffsetDateTime 3. 将字符串解析为UTC中的ZonedDateTime 学习使用Java中的DateTimeFor……




  • 1.Instant、OffsetDateTime和ZonedDateTime类
  • 2. 将字符串解析为UTC中的OffsetDateTime
  • 3. 将字符串解析为UTC中的ZonedDateTime

学习使用Java中的DateTimeFormatter类将字符串转换日期时间实例类,例如ZonedDateTime或OffsetDateTime类。

1.Instant、OffsetDateTime和ZonedDateTime类

在Java 8中,OffsetDateTime和ZonedDateTime都存储了瞬时在通用时间线上的纳秒精度。

  • OffsetDateTime增加了从UTC的偏移量,这使得本地日期时间可以被获得。当我们需要更详细地模拟日期时间概念,或者与数据库或网络协议通信时,可以使用OffsetDateTime。
  • ZonedDateTime在处理日期时使用完整时区规则。我们可以使用ZonedDateTime在UI中显示时间。它遵守DST(夏令时)规则。请注意,在DST更改期间,时区偏移量可能会根据时区ID而变化。

2. 将字符串解析为UTC中的OffsetDateTime

带有偏移信息的日期时间以任何模式表示。例如,如果我们使用模式“03/08/2019T16:20:17:717+05:30”,则此时间戳表示在“+05:30”偏移量处的瞬时。

下面是一个Java程序,用于将字符串转换为OffsetDateTime并获取等效的UTC瞬时。它使用withOffsetSameInstant(ZoneOffset.UTC)函数将给定的瞬时转换为UTC瞬时。

字符串中的’Z’代表UTC时区。它是Zulu的缩写形式,可以写成UTC +0:00。

import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
public class Main {
    public static void main(String[] args) throws Exception
    {
        DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter
                                .ofPattern(\"dd/MM/uuuu\'T\'HH:mm:ss:SSSXXXXX\");
        //带有偏移量的日期字符串
        String dateString = \"03/08/2019T16:20:17:717+05:30\";
        //带有偏移量的实例化
        OffsetDateTime odtInstanceAtOffset = OffsetDateTime.parse(dateString, DATE_TIME_FORMATTER);
        //UTC实例化
        OffsetDateTime odtInstanceAtUTC = odtInstanceAtOffset.withOffsetSameInstant(ZoneOffset.UTC);
        //格式化为字符串
        String dateStringInUTC = odtInstanceAtUTC.format(DATE_TIME_FORMATTER);
        System.out.println(odtInstanceAtOffset);
        System.out.println(odtInstanceAtUTC);
        System.out.println(dateStringInUTC);
        //将OffsetDateTime转换为UTC中的即时时间
        System.out.println(odtInstanceAtOffset.toInstant());
    }
}

程序输出。

2019-08-03T16:20:17.717+05:30
2019-08-03T10:50:17.717Z
03/08/2019T10:50:17:717Z
2019-08-03T10:50:17.717Z

3. 将字符串解析为UTC中的ZonedDateTime

带有完整时区信息的日期时间可以表示为以下格式:

  • dd/MM/uuuu’T’HH:mm:ss:SSSXXXXX模式,例如“03/08/2019T16:20:17:717+05:30”。
  • MM/dd/yyyy’T’HH:mm:ss:SSS z模式,例如“08/03/2019T16:20:17:717 UTC+05:30”。

在这个例子中,时间戳表示在“+05:30”偏移量处的瞬时,即IST。

下面是一个Java程序,用于将字符串转换为ZonedDateTime并获取等效的UTC瞬时。它使用withZoneSameInstant(ZoneOffset.UTC)方法获取UTC时区ID中的瞬时。

Parse String to ZonedDateTimeimport java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
    public static void main(String[] args) throws Exception
    {
        DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter
                                .ofPattern(\"MM/dd/yyyy\'T\'HH:mm:ss:SSS z\");
        //带有时区信息的日期字符串
        String dateString = \"08/03/2019T16:20:17:717 UTC+05:30\";
        //实例化带有时区的日期
        ZonedDateTime zdtInstanceAtOffset = ZonedDateTime.parse(dateString, DATE_TIME_FORMATTER);
        //UTC实例化
        ZonedDateTime zdtInstanceAtUTC = zdtInstanceAtOffset.withZoneSameInstant(ZoneOffset.UTC);
        //格式化为字符串
        String dateStringInUTC = zdtInstanceAtUTC.format(DATE_TIME_FORMATTER);
        System.out.println(zdtInstanceAtOffset);
        System.out.println(zdtInstanceAtUTC);
        System.out.println(dateStringInUTC);
        //Convert ZonedDateTime to instant which is in UTC
        System.out.println(zdtInstanceAtOffset.toInstant());
    }
}

程序输出。

2019-08-03T16:20:17.717+05:30[UTC+05:30]
2019-08-03T10:50:17.717Z
08/03/2019T10:50:17:717 Z
2019-08-03T10:50:17.717Z

以上就是Java8如何将字符串转换为UTC日期对象的方法。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9641.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号