gpt4 book ai didi

java - datetimeformatter joda 使用可选的 millis 解析多种 utc 格式

转载 作者:行者123 更新时间:2023-12-01 23:11:17 36 4
gpt4 key购买 nike

我正在尝试使用 joda 解析多个可能的 UTC 时间格式,如下所示:

        DateTimeFormatter formatter;
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
builder.append(DateTimeFormat.forPattern("yyyyMMdd-HH:mm:ss.sss"));
builder.append(DateTimeFormat.forPattern("yyyyMMdd-HH:mm:ss"));
formatter = builder.toFormatter();
formatter.withZone(DateTimeZone.UTC);
System.out.println(formatter.parseDateTime("20130122-12:01:59"));

我遇到以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "20130122-12:01:59" is too short
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:873)
at com.cme.clearing.financials.gateway.internal.config.Sample.main(Sample.java:16)

有没有办法让joda解析UTC中的可选毫秒。

最佳答案

是的,有:

// Milliseconds parser
final DateTimeParser msParser = new DateTimeFormatterBuilder()
.appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
.toParser();

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

builder = builder.appendFixedDecimal(year(), 4)
.appendFixedDecimal(monthOfYear(), 2)
.appendFixedDecimal(dayOfMonth(), 2)
.appendLiteral('-')
.appendFixedDecimal(hourOfDay(), 2)
.appendLiteral(':')
.appendFixedDecimal(minuteOfHour(), 2)
.appendLiteral(':')
.appendFixedDecimal(secondOfMinute(), 2)
.appendOptional(msParser); // <-- HERE: optional milliseconds
// builder.build().withTimeZone(DateTimeZone.UTC) will return the formatter

当然,适应您的代码,但这应该很容易。

编辑:适应OP的需求

关于java - datetimeformatter joda 使用可选的 millis 解析多种 utc 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937147/

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