gpt4 book ai didi

java - DateTimeFormatter 将空清零

转载 作者:行者123 更新时间:2023-12-02 03:28:13 28 4
gpt4 key购买 nike

有没有办法拥有这样的 DateTimeFormatter

DateTimeFormatter.ofPattern("HH:mm")

它应该转换为 LocalDateTime 并且将缺少的内容归零?

实际上,Joda 上有 DateTimeFormat,它返回一个 DateTime,也不异常(exception)。有没有类似的东西?

val formatter = org.joda.time.format.DateTimeFormat.forPattern(pattern)
formatter.parseDateTime(data).toDate

无论模式是什么,总会产生一个真实的日期,而在 java8 上,它表示缺少 LocalDate。

实际上,该模式应该是可变的,以便人们可以插入 HH:mm 和 dd.MM.yyyy 并始终获得 LocalDateTime,该时间应该初始化/默认为 1970-01-01T00:00。

这样做:

// with pattern HH:mm
formatter.parse("00:00") should yield LocalDateTime.of(1970, 01, 01, 0, 0)

// with pattern YYYY-mm
formatter.parse("2016-11") should yield LocalDateTime.of(2016, 11, 01, 0, 0)

最佳答案

没有内置默认值。 必须提供缺失的值。

// Parse HH:mm
LocalDateTime ldt1 = LocalTime.parse("12:34")
.atDate(LocalDate.of(1970, 1, 1));
System.out.println(ldt1); // Prints 1970-01-01T12:34

// Parse YYYY-mm
LocalDateTime ldt2 = YearMonth.parse("2016-11")
.atDay(1)
.atStartOfDay();
System.out.println(ldt2); // Prints 2016-11-01T00:00

请注意,您甚至不需要它们中的任何一个 DateTimeFormatter

<小时/>

更新

如果您必须使用 DateTimeFormatter ,然后您可以使用 DateTimeFormatterBuilder 创建一个,您可以在其中使用 parseDefaulting() 提供缺失值方法。

// Parse HH:mm
DateTimeFormatter formatter1 = new DateTimeFormatterBuilder()
.appendPattern("HH:mm") // other time fields default to 0, see "Resolving"
.parseDefaulting(ChronoField.EPOCH_DAY, 0) // short for 1970-01-01
.toFormatter();
LocalDateTime ldt1 = LocalDateTime.parse("12:34", formatter1);
System.out.println(ldt1); // Prints 1970-01-01T12:34

// Parse YYYY-mm
DateTimeFormatter formatter2 = new DateTimeFormatterBuilder()
.appendPattern("uuuu-MM")
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1) // see resolveDate()
.parseDefaulting(ChronoField.NANO_OF_DAY, 0) // short for 00:00:00.000000000
.toFormatter();
LocalDateTime ldt2 = LocalDateTime.parse("2016-11", formatter2);
System.out.println(ldt2); // Prints 2016-11-01T00:00

至于需要哪些字段才能成功解析,请参见:

关于java - DateTimeFormatter 将空清零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38491482/

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