当前位置:网站首页 > Java基础 > 正文

Java字符串转时间(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]

 类型转换:
 

 输出结果:

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

 

到此这篇Java字符串转时间(java字符串时间格式转换)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Java字符串转数组(java字符串转为数组)2025-03-24 10:18:05
  • java课程 在线(java在线教学)2025-03-24 10:18:05
  • java的网站(java web网站)2025-03-24 10:18:05
  • jcenter()不支持浏览(浏览器不支持java applet)2025-03-24 10:18:05
  • vscode中配置java环境(vscode如何配置java环境)2025-03-24 10:18:05
  • 单向链表反转java实现(单向链表反转java实现头插法)2025-03-24 10:18:05
  • java 线程内存模型(java线程内存释放)2025-03-24 10:18:05
  • java面试必考题(java面试题及答案整理)2025-03-24 10:18:05
  • java基础网站(java入门网站)2025-03-24 10:18:05
  • vscode怎么配置java环境(vscode java.home)2025-03-24 10:18:05
  • 全屏图片