joda格式化LocalDate

时间:2016-01-06 14:35:44

标签: android jodatime

我有以下代码创建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)

2 个答案:

答案 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"));