首页 > 解决方案 > 如何将以下日期格式“2013 年 5 月 1 日”转换为“2013-05-01”

问题描述

如何将日期格式转换1st-May-20132013-05-0110th-Jun-2002和。2002-06-102nd-Apr-19961996-04-02

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

标签: javajava-8

解决方案


LocalDateis 的existings 格式化程序不考虑序数部分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


推荐阅读