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

Java字符串转时间(java字符串时间格式转换)简介 之前写过一篇 j ava util date 转换 java time 的博客 除了 date 转换成 java time 外 偶尔也能碰见 string 转换成 java time 的情况 所以另写一篇来记录一下 本文只涉及时间类型转换 不涉及时间处理 内容分为两个方面 一个是理论 一个是实操 date 转 time java



简介:之前写过一篇java.util.date转换java.time的博客,除了date转换成java.time外,偶尔也能碰见string转换成java.time的情况,所以另写一篇来记录一下(本文只涉及时间类型转换,不涉及时间处理),内容分为两个方面,一个是理论,一个是实操。

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

LocalDate表示没有时区信息的日期yyyy-MM-ddLocalTime表示没有时区信息的时间HH:mm:ssLocalDateTime

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

yyyy-MM-dd HH:mm:ssZonedDateTime带有时区信息的日期时间yyyy-MM-dd'T'HH:mm:ss.SSSXXXInstant代表时间戳,类似于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]

 类型转换:
 

 输出结果:

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

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-02-24 17:17
下一篇 2025-02-11 13:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/61688.html