将字符串“yyyy-MM-dd'T'HH:mm:ss.SSSZ”转换为本地日期

问题描述 投票:0回答:1

我有字符串 s = "2023-12-15T10:13:44.544Z',我想使用 java11 单独提取日期部分。我们可以使用 java11 单独获取日期(yyyy-MM-dd)的最佳方法是什么。 我感谢您的帮助!

java java-11
1个回答
0
投票

tl;博士

Instant
.parse( "2023-12-15T10:13:44.544Z" )
.atOffset( ZoneOffset.UTC )
.toLocalDate()
.toString()

或者:

"2023-12-15T10:13:44.544Z".substring( 0 , 10 )

在 Ideone.com 上运行两者。

java.time

使用 JSR 310 中定义的 java.time 类来处理所有日期时间工作。

输入字符串末尾的

Z
表示根据 ISO 8601 标准,与 UTC 的偏移量为零时-分-秒。

解析为

Instant

Instant instant = Instant.parse( "2023-12-15T10:13:44.544Z" ) ;

转换为更灵活的

OffsetDateTime
类。

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;

将仅日期部分提取为

LocalDate

LocalDate ld = odt.toLocalDate() ;

生成的文本为 ISO 8601 格式,YYYY-MM-DD。

String output = ld.toString() ;

字符串操作

或者更简单地说,只需剪掉日期部分之后的其余文本即可。

String output = "2023-12-15T10:13:44.544Z".substring( 0 , 10 ) ;

查看此代码在 Ideone.com 上运行

© www.soinside.com 2019 - 2024. All rights reserved.