Java joda时间格式化程序解析yyyy mm dd和额外小时

Java joda时间格式化程序解析yyyy mm dd和额外小时,java,jodatime,Java,Jodatime,我正在使用Joda time DateTimeFormatter以yyyy-mm-dd字符串格式创建一个新的datetime对象。调用DateTime date=formatter.parse(String)时,我会得到一个额外一小时的DateTime对象。我住在UTC+1。如何在不添加小时数的情况下格式化字符串datetime String date = "2013-01-28"; DateTimeFormatter formatter = DateTimeFormat.forPatte

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

 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)。请参阅的文档


用错误的模式解析“2013-01-28”将生成“2013-01-28T00:01:00.000+01:00”。你认为分钟等于1吗?如果解析器找不到月份信息(我认为不明智),则一月似乎是默认值。

这是正确的答案。虽然Orest提供了一些有效的方法,但您指出了错误。@CraigSmith好吧,
formatter.parseLocalDate(date)
似乎只起作用,因为解析到普通日期忽略了分钟,并选择一月作为缺少月份的默认值。这只是偶然的,这里的默认值与输入(“01”)中的部分一致,在您预期的月份位置,但按模式指定了分钟。