我有自定义格式化程序......
// 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中的错误吗?或者(更有可能)我自己的无知?
答案 0 :(得分:1)
你说它当天是0毫秒。换句话说,它是一天中的第一毫秒。这显然与小时5相冲突,看起来最后指定的值优先。
我怀疑你想要appendMillisOfSecond
- 已经指定的第二个中的毫秒。
(请告诉我,如果差异不明确的话。我最近一直在为Noda Time编写解析器和格式化程序,所以我对大多数人的看法有点不同......)