joda time formatter用额外的小时解析yyyy-mm-dd

时间:2016-01-30 21:59:20

标签: java jodatime

我正在使用Joda time DateTimeFormatter以yyyy-mm-dd字符串格式创建一个新的datetime对象。当调用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

1 个答案:

答案 0 :(得分:1)

yyyy-mm-dd使用分钟,而非月份(模式符号M)。请参阅pattern symbols on Joda-Time-page的文档。

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