如何将日期格式1st-May-2013
转换为2013-05-01
,10th-Jun-2002
至2002-06-10
和2nd-Apr-1996
至1996-04-02
。
请注意,输入日期包含序数部分(例如1st
等)。
答案 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