Java joda时间意外格式
我正在尝试使用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),则不需要将其追加到输入字符串的末尾。您可以简单地创建一个没有它
字符串
日期和时间转换为日期
,但得到的结果不是预期的结果
从服务器上我得到:
2017年11月8日12:302017年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);