2025年Java字符串转时间(java字符串时间格式转换)

Java字符串转时间(java字符串时间格式转换)p 简介 之前写过一篇 j strong ava util date strong 转换 strong java time strong 的博客 除了 strong date strong 转换成 strong java time lt strong p

大家好,我是讯享网,很高兴认识大家。



 <p>简介&#xff1a;之前写过一篇j<strong>ava.util.date</strong>转换<strong>java.time</strong>的博客&#xff0c;除了<strong>date</strong>转换成<strong>java.time</strong>外&#xff0c;偶尔也能碰见<strong>string</strong>转换成<strong>java.time</strong>的情况&#xff0c;所以另写一篇来记录一下&#xff08;本文只涉及时间类型转换&#xff0c;不涉及时间处理&#xff09;&#xff0c;内容分为两个方面&#xff0c;一个是理论&#xff0c;一个是实操。</p> 

讯享网

date转time:java.util.date转换java.time汇总-CSDN博客

LocalDate 表示没有时区信息的日期 yyyy-MM-dd LocalTime 表示没有时区信息的时间 HH:mm:ss LocalDateTime

结合了日期和时间,但没有时区信息

yyyy-MM-dd HH:mm:ss ZonedDateTime 带有时区信息的日期时间 yyyy-MM-dd'T'HH:mm:ss.SSSXXX Instant 代表时间戳,类似于Date,但精度更高 yyyy-MM-dd'T'HH:mm:ss.SSSXXX

这里介绍一个java.time用于日期时间格式化和解析的类:DateTimeFormatter

它可以将符合特定格式的字符串解析成相应的日期时间对象。

1.使用预定义的格式器进行转换

2.使用自定义格式器进行转换

使用 方法可以创建自定义的格式化器。以下是一些常见的模式字母及其含义:

  • :时代 (例如 AD)
  • :年 (四位数, ISO周日历系统)
  • :年 (两位数, ISO周日历系统)
  •  或 :月份
  • :日
  • :星期几
  • :上午/下午标记
  • :小时 (0-23)
  • :小时 (1-12)
  • :分钟
  • :秒
  • :毫秒
  • :纳秒
  • :时区ID
  • :时区名称
  • :时区偏移量

3.示例:

使用预定义的格式器:

讯享网

输出结果:

当前日期 (ISO_LOCAL_DATE): 2024-10-29
当前日期时间 (ISO_LOCAL_DATE_TIME): 2024-10-29T15:10:17.909
当前带时区的日期时间 (ISO_ZONED_DATE_TIME): 2024-10-29T15:10:17.911+08:00[Asia/Shanghai]

使用自定义的格式器:

 

 处理时区:

讯享网


讯享网

我们需要先通过DateTimeFormatter解析字符串中的时间格式

1.包含时区

java.time中带时区的有两种数据类型,分别是:Instant,ZonedDateTime

Instant类型需要通过ZonedDateTime进行转换,java.time不提供直接转换成Instant的方法。

预定义格式: 

假设我们有一个字符串:

“2024-10-29T18:03:00+08:00”

这是一个包含时区的字符串,属于ISO 8601格式,那我们可以直接使用预定义的格式器。

 

输出结果为:

 Parsed ZonedDateTime: 2024-10-29T18:03+08:00

非预定义格式:

假设我们有一个字符串:

“2024-10-29 18:03:00 Asia/Shanghai”

这是一个包含时区的字符串,而且非预定义格式,因此我们需要创建一个匹配该格式的DateTimeFormatter

讯享网

输出结果为:

 Parsed Custom ZonedDateTime: 2024-10-29T18:03+08:00[Asia/Shanghai]

 类型转换:
 

 输出结果:

2.不包含时区

java.time中不包含时区的有三个数据类型,分别是LocalDateTime.LocalDate.LocalTime.

我们需要根据获取字符串是否包含日期和时间进行选择。

预定义格式: 

假设我们拥有一个字符串:

“2024-10-29T18:10:30”

它不含时区,而且是标准的ISO 8601格式,而LocalDateTime默认支持这种格式,因此我们可以直接进行转换。

讯享网

输出结果为:

2024-10-29T18:10:30
2024-10-29
18:10:30

 非预定义格式:

假设我们拥有一个字符串:

“2024-10-29T18:10”

它不含时区,而且不是标准的ISO 8601格式,那么我们需要定义一个DateTimeFormatter

 

输出结果为:

2024-10-29T18:10
18:10
2024-10-29

 


小讯
上一篇 2025-06-05 21:16
下一篇 2025-05-29 09:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/157404.html