Date 我如何解析;YYYY-MM-DD“;和乔达在一起
我正在尝试使用joda time解析格式为Date 我如何解析;YYYY-MM-DD“;和乔达在一起,date,jodatime,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); 哪些产出: 2005-01-30T00:00:00.000Z 如您所
YYYY-MM-DD
的日期字符串。我有这样的测试代码:
DateTimeFormatter dateDecoder = DateTimeFormat.forPattern("YYYY-MM-DD");
DateTime dateTime = dateDecoder.parseDateTime("2005-07-30");
System.out.println(dateTime);
哪些产出:
2005-01-30T00:00:00.000Z
如您所见,生成的DateTime
对象是2005年1月30日
,而不是2005年7月30日
谢谢你的帮助。我认为这是可行的,因为它是列出的日期格式之一。您的答案在文档中:
字符串格式应该类似于:“yyyy-MM-dd”。与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”
我还添加了一些增强的格式。中描述的日期格式与JodaTime的
DateTimeFormat
不同
更具体地说,在中,DD
模式表示一年中的Day
,因此30
的DD
值是一年中的第30天,即1月30日。当格式化程序读取日期字符串时,它会将月份设置为07
。当它读取一年中的某一天时,它将用1月份的01
覆盖该日期
您需要使用DateTimeFormat
所期望的模式字符串,而不是w3 dat和时间格式所期望的模式字符串。在这种情况下,这将是
DateTimeFormatter dateDecoder = DateTimeFormat.forPattern("yyyy-MM-dd");
谢谢你,吉姆。我应该说,我确实尝试过SimpleDateFormat风格的日期,可以看出它对这些日期很有效。我只是觉得既然joda time docs声明它支持ISO8601格式的日期,那么我认为它会支持它们。不用担心。。。我会想出别的办法的。谢谢