如何用joda时间解析"YYYY-MM-DD"

Tom*_*lly 5 date jodatime

我正在尝试使用joda-time来解析表单的日期字符串YYYY-MM-DD.我有这样的测试代码:

DateTimeFormatter dateDecoder = DateTimeFormat.forPattern("YYYY-MM-DD");
DateTime dateTime = dateDecoder.parseDateTime("2005-07-30");

System.out.println(dateTime);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

2005-01-30T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

如您所见,生成的DateTime对象是30 Jan 2005,而不是30 July 2005.

感谢任何帮助.我只是假设这会起作用,因为它是这里列出的日期格式之一.

Jod*_*hen 5

混淆是ISO格式实际上是什么.YYYY-MM-DD不是ISO格式,实际结果日期是.

所以2005-07-30 ISO-8601格式,并规范使用YYYY-MM-DD描述的格式.YYYY-MM-DD在规范中使用作为模式和任何代码之间没有任何联系.规范的唯一约束是,结果包括一个4位数年份,后面跟一个破折号,后跟一个2位数的月份,然后是一个破折号,后面跟着一个两位数的日期.

因此,可以使用规范$year4-$month2-$day2,这同样可以很好地定义输出格式.

您需要搜索并替换任何输入模式,将"Y"转换为"y",将"D"转换为"d".

我还添加了一些格式化的增强文档.


Jim*_*ows 4

您的答案在文档中:http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html

字符串格式应类似于:“yyyy-MM-dd”。