我有以下代码创建LocalDate。当我在其上调用toString方法时,输出为2016-01-05。
我希望日期符合以下格式。 05-JAN-2016
int dayInt = Integer.parseInt(dayStr);
int monthInt = Integer.parseInt(monthStr);
int yearInt = Integer.parseInt(yearStr);
LocalDate ldt = new LocalDate(yearInt, monthInt, dayInt);
Log.e(TAG, "LocalDate = " + ldt.toString()); //eg 2016-01-05
LocalDate localDate2 = LocalDate.parse(ldt.toString(), DateTimeFormat.forPattern("dd-MMM-yy"));
我得到以下异常,有人知道我该怎么做吗?
提前致谢。
01-06 14:34:13.903: E/CustomExceptionHandler(8590): stack = java.lang.IllegalArgumentException: Invalid format: "2016-01-04" is malformed at "16-01-04"
01-06 14:34:13.903: E/CustomExceptionHandler(8590): at org.joda.time.format.DateTimeFormatter.parseLocalDateTime(DateTimeFormatter.java:821)
01-06 14:34:13.903: E/CustomExceptionHandler(8590): at org.joda.time.format.DateTimeFormatter.parseLocalDate(DateTimeFormatter.java:765)
01-06 14:34:13.903: E/CustomExceptionHandler(8590): at org.joda.time.LocalDate.parse(LocalDate.java:178)
答案 0 :(得分:1)
表达式ldt.toString()
产生" 2016-01-05"。
所以你的格式模式应该是:" yyyy-MM-dd "但是你开始你的模式的那一天只有两位数(如错误信息所示)。
你说:
我希望日期符合以下格式。 05-JAN-2016
然后你必须格式化它(不解析它):
String s = DateTimeFormat.forPattern("dd-MMM-yyyy").withLocale(Locale.ENGLISH).print(ldt);
答案 1 :(得分:0)
年份格式不正确。改变这一行:
LocalDate localDate2 = LocalDate.parse(ldt.toString(), DateTimeFormat.forPattern("dd-MMM-yy"));
到:
LocalDate localDate2 = LocalDate.parse(ldt.toString(), DateTimeFormat.forPattern("dd-MMM-yyyy"));