gpt4 book ai didi

java - 如何将不同的日期字符串解析为LocalDate/Year?

转载 作者:行者123 更新时间:2023-11-30 05:36:09 26 4
gpt4 key购买 nike

我从 Json 获取对象列表,每个对象都包含日期字符串。有两种不同的格式,一种是标准的“yyyy-MM-dd”格式,第二种是年份“yyyy”。将这些字符串解析为 unix 时间戳的优雅方法是什么?目前我正在使用带有 SimpleDateFormat 的双 try-catch block ,但我想找到更好的解决方案。

最佳答案

如果长度为四个字符,则解析为年份

Year y = Year.parse( input ) ;

您想如何将其表示为一个时刻?也许是一年中第一天的第一时刻(UTC)?

LocalDate ld = y.atDay( 1 ) ;
Instant instant = ld.atStartOfDay( ZoneOffset.UTC ).toInstant() ;

“Unix 时间戳”是指自 UTC 1970 年第一时刻以来的毫秒数吗?

long millis = instant.toEpochMilli() ;

如果输入的长度为 10 个字符,则解析为 LocalDate

LocalDate ld = LocalDate.parse( input ) ;

执行与上面相同的操作。

long millis = ld.atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;

把所有这些放在一起。

switch ( input.length() ) {
case 4 : return Year.parse( input ).atDay( 1 ).atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;
case 10 : return LocalDate.parse( input ).atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;
default : … throw exception, unexpected input.
}

关于java - 如何将不同的日期字符串解析为LocalDate/Year?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56573908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com