【发布时间】:2018-08-16 13:09:06
【问题描述】:
我尝试解析一个日期字符串,但得到错误的月份,为什么?
new SimpleDateFormat("yyyy-MM-DD", Locale.US).parse("2018-03-08")
为什么返回月份为 Jan?
请查看截图:
【问题讨论】:
-
使用
dd而不是DD。前者为月日,后者为年日。 -
尝试新的 SimpleDateFormat("yyyy-MM-dd", Locale.US).parse("2018-03-08");
-
另请注意,在使用
SimpleDateFormat之前调用setLenient(false),可以防止某些尝试解释错误的String。在您的情况下,尝试解析String会给出java.text.ParseException: Unparseable date: "2018-03-08"。 -
顺便考虑扔掉早已过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .与它一起工作要好得多。它还将缓解您的问题:现代LocalDate类在没有任何显式格式化程序的情况下解析您的2018-03-08,因为它是默认格式(ISO 8601)。所以没有办法弄错格式模式字符串。
标签: java android date simpledateformat date-parsing