为什么org.joda.time.DateTimeFormatter不能正确解析自定义日期时间?

时间:2011-09-14 22:45:45

标签: java jodatime

我有自定义格式化程序......

// default our time zone to the machine local one.
private static final DateTimeZone LOCAL_TZ = DateTimeZone.getDefault();

// format of date (i.e., timestamp) is yyyy-MM-dd HH:mm:ss.S
private static final DateTimeFormatter YEAR_MONTH_DAY_HOUR_MINUTE_SECOND_MILLIS_FORMATTER =
        new DateTimeFormatterBuilder()
.appendYear(4,4)
.appendLiteral('-')
.appendMonthOfYear(1)
.appendLiteral('-')
.appendDayOfMonth(1)
.appendLiteral(' ')
.appendHourOfDay(2)
.appendLiteral(':')
.appendMinuteOfDay(1)
.appendLiteral(':')
.appendSecondOfDay(1)
.appendLiteral('.')
.appendMillisOfDay(1)
.toFormatter().withZone(LOCAL_TZ);

我做的事情......

String value = "2011-06-21 05:00:00.0";
YEAR_MONTH_DAY_HOUR_MINUTE_SECOND_MILLIS_FORMATTER.parseDateTime(value);

如果我在调试器中查看org.joda.time.DateTime,我会看到hour:minute:second.millis被转换为00:00:00.0。

是什么给出的?我试过在HourOfDay,MinuteOfDay,SecondOfDay等上使用minDigits。这是JodaTime 2.0中的错误吗?或者(更有可能)我自己的无知?

1 个答案:

答案 0 :(得分:1)

你说它当天是0毫秒。换句话说,它是一天中的第一毫秒。这显然与小时5相冲突,看起来最后指定的值优先。

我怀疑你想要appendMillisOfSecond - 已经指定的第二个中的毫秒

(请告诉我,如果差异不明确的话。我最近一直在为Noda Time编写解析器和格式化程序,所以我对大多数人的看法有点不同......)