Java joda时间意外格式

Java joda时间意外格式,java,datetime,jodatime,datetime-parsing,Java,Datetime,Jodatime,Datetime Parsing,我正在尝试使用Joda时间库将字符串日期和时间转换为日期,但得到的结果不是预期的结果 从服务器上我得到: 2017年11月8日12:30 2017年11月10日12:30 Joda将其转换为: 2017-01-08T12:30:00.000+02:00 2017-01-10T12:30:00.000+02:00 这是因为您在当月使用的是mm,但正确的模式是大写的mm。有关更多详细信息,请查看 还有一件事。如果您的输入没有秒(:00),则不需要将其追加到输入字符串的末尾。您可以简单地创建一个没有它

我正在尝试使用Joda时间库将
字符串
日期和时间转换为
日期
,但得到的结果不是预期的结果

从服务器上我得到:

2017年11月8日12:30
2017年11月10日12:30

Joda将其转换为:

2017-01-08T12:30:00.000+02:00
2017-01-10T12:30:00.000+02:00


这是因为您在当月使用的是
mm
,但正确的模式是大写的
mm
。有关更多详细信息,请查看

还有一件事。如果您的输入没有秒(
:00
),则不需要将其追加到输入字符串的末尾。您可以简单地创建一个没有它的模式:

/“MM”表示月份,如果输入没有“ss”,则在几秒钟内不要使用“ss”
DateTimeFormatter formatter=DateTimeFormat.forPattern(“dd/MM/yyyy HH:MM”);
//解析输入(秒不带“:00”)
DateTime start=格式化程序.parseDateTime(“08/11/2017 12:30”);
System.out.println(start.toString());
输出将是:

2017-11-08T12:30:00.000-02:00


请注意偏移量(
-02:00
)与您的不同。这是因为
DateTime
如果不指定默认时区,则使用默认时区。

2017年8月11日12:30===>2017-01-08T12:30:00.000+02:00和2017年10月11日12:30==>2017-01-10T12:30:00.000+02:00模式“dd/mm/yyyyy HH:mm:ss”肯定不正确,因为第一次出现“mm”应该是“MM”(月,而不是分钟)。
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/mm/yyyy HH:mm:ss");

// add two :00 at the end for the seconds
startDate = startDate +":00";
DateTime start = formatter.parseDateTime(startDate);
System.out.println(start.toString());

endDate= endDate + ":00";
DateTime end = formatter.parseDateTime(endDate);