日期格式错误(月冲突)

时间:2017-08-29 07:16:35

标签: java datetime

我正在尝试将格式yyyy-mm-dd的字符串转换为dd-MMM-yy。我正在得到正确的年和日,但是对于一个月,它只显示jan而不管我的输入。如何解决?

String input = "2013-09-14";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-mm-dd");
SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yy");
Date date = null;
try {
    date = format1.parse(input);
    String temp = format2.format(date);
    System.out.println(temp);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

输出:

14-Jan-13

但我应该得到:

14-Oct-13

5 个答案:

答案 0 :(得分:1)

mm 是几分钟。 MM 持续数月。

SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

答案 1 :(得分:1)

mm用于分钟

需要MMMMM

请参阅SimpleDateFormat以供参考。

答案 2 :(得分:1)

我会建议最新的API LocalDate,不需要try/catch,而且更容易使用:

String input = "2013-09-14";

LocalDate inputDate = LocalDate.parse(input, DateTimeFormatter.ISO_DATE);
String format = inputDate.format(DateTimeFormatter.ofPattern("dd-MMM-yy"));

System.out.println(format);
  • DateTimeFormatter.ISO_DATEDateTimeFormatter.ofPattern("yyyy-MM-dd");
  • 的快捷方式
  • LocalDate inputDate = LocalDate.parse(input);也可以,因为ISO_DATE默认format

DateTimeFormatter doc (patterns)

答案 3 :(得分:0)

模式区分大小写:

MM是月,mm是分钟:

 SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

有关更多信息,请阅读SimpleDateFormat

的javadoc

答案 4 :(得分:-3)

我亲自使用一种模式来做到这一点,

LocalTime w = LocalTime.MIDNIGHT.plus(d);
s = DateTimeFormatter.ofPattern("HH:mm:ss").format(w);

我建议你改用java 8日期类型