gpt4 book ai didi

java - 根据输入字符串解析 LocalDateTime

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

客户端能够以格式发送String"yyyy-MM-dd HH:mm:ss""yyyy-MM-dd" ,根据它,我需要解析完整的 LocalDateTime 如果他向我发送完整格式或使用默认 Time 部分创建 LocalDateTime 对象 "23:59:59"

现在我已经编写了这个解决方案,但它似乎很糟糕,因为我使用异常来控制业务逻辑。

public class LocalDateTimeConverter implements IStringConverter<LocalDateTime> {

private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

@Override
public LocalDateTime convert(String value) {
LocalDateTime localDateTime;
try {
localDateTime = LocalDateTime.parse(value, DATE_TIME_FORMATTER);
} catch (DateTimeParseException ex) {
localDateTime = LocalDateTime.of(LocalDate.parse(value), LocalTime.of(23, 59, 59));
}

return localDateTime;
}

}

关于如何更清楚地实现它有什么建议吗?

最佳答案

我从未使用过 parseDefaulting,但快速了解它似乎有效。

private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR_OF_ERA, 4, 4, SignStyle.NEVER)
.appendLiteral('-')
.appendValue(ChronoField.MONTH_OF_YEAR, 2, 2, SignStyle.NEVER)
.appendLiteral('-')
.appendValue(ChronoField.DAY_OF_MONTH, 2, 2, SignStyle.NEVER)
.optionalStart()
.appendLiteral(' ')
.appendValue(ChronoField.HOUR_OF_DAY, 2)
.appendLiteral(':')
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.optionalEnd()
.parseDefaulting(ChronoField.HOUR_OF_DAY, 23)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 59)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 59)
.toFormatter();

LocalDateTime.parse("2000-01-01 01:02:03", DATE_TIME_FORMATTER) // 2000-01-01T01:02:03
LocalDateTime.parse("2000-01-01", DATE_TIME_FORMATTER) // 2000-01-01T23:59:59

关于java - 根据输入字符串解析 LocalDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53410100/

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