joda 时间格式化程序用额外的小时解析 yyyy-mm-dd

joda time formatter parsing yyyy-mm-dd with extra hour

我正在使用 Joda time DateTimeFormatter 以 yyyy-mm-dd 字符串格式创建一个新的日期时间对象。调用 DateTime date = formatter.parse(String) 时,我得到一个额外一小时的 DateTime 对象。我住在 UTC +1。如何在不添加小时的情况下格式化字符串日期时间。

 String date = "2013-01-28";

 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-mm-dd");
 DateTime date = formatter.parseDateTime(date);
 date.ToString() = 2013-01-28T00:01:00.000+01:00
 expected = 2013-01-28T00:00:00.000+01:00

此外,稍后在代码中我比较了两个 DateTime 对象。此解析器采用 yymmdd 格式,不会增加一小时。

String date = "130102"

 DateTimeFormatter format = DateTimeFormat.forPattern("yyMMdd");
 DateTime datetime = format.parseDateTime(date);
 datetime.toString = 2013-01-02T00:00:00.000+01:00

yyyy-mm-dd 使用 分钟, 而不是月份(模式符号 M)。请参考pattern symbols on Joda-Time-page.

的文档

使用错误的模式解析“2013-01-28”会产生“2013-01-28T00:01:00.000+01:00”。你看到分钟等于 1 了吗?如果解析器找不到月份信息,一月份似乎是默认值(在我看来不聪明)。