如何将以下日期格式“ 2013年5月1日”转换为“ 2013-05-01”

时间:2018-07-06 08:50:08

标签: java java-8

如何将日期格式1st-May-2013转换为2013-05-0110th-Jun-20022002-06-102nd-Apr-19961996-04-02

请注意,输入日期包含序数部分(例如1st等)。

1 个答案:

答案 0 :(得分:3)

LocalDate的现有格式化程序DateTimeFormatter不考虑序数部分,因此您需要删除序数部分,然后使用良好的模式进行解析

public static void main(String[] args){
    String[]strs = {"1st-May-2013", "10th-Jun-2002", "2nd-Apr-1996"};       
    for(String str : strs){
        LocalDate d = ordinalStringToDate(str);
        System.out.println(d);
    }
}
private static LocalDate ordinalStringToDate(String str){
     return LocalDate.parse(str.replaceAll("(st|nd|rd|th)", ""), 
                            DateTimeFormatter.ofPattern("d-MMM-yyyy"));
}

模式

  • d用于表示日期
  • MMM用于短月份的月份(MMMM用于月份的完整名称)
  • yyyy跟年份数字

Workable Demo