java - 如何将以下日期格式“2013 年 5 月 1 日”转换为“2013-05-01”
问题描述
如何将日期格式转换1st-May-2013
为2013-05-01
、10th-Jun-2002
和。2002-06-10
2nd-Apr-1996
1996-04-02
请注意,输入日期包含序数部分(例如1st
等)。
解决方案
LocalDate
is 的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
推荐阅读
- svn - SVN 无法更改忽略属性
- flutter - Flutter 我怎么知道 TextField 是否已经(失去焦点,焦点出)?
- java - IBM Watson 语音转文本结果只有小写?
- css - 如何自定义多个fillCol的宽度?
- string - 更改字符串中某些项目的顺序
- c# - 是否有一个 XML 或 JSON 序列化器知道使用哪个构造函数来填充不可变对象并序列化 IEnumerable<> 属性?
- javascript - Ajax如何通过find方法在对象数组中查找内容
- javascript - 在客户端比较订阅到期日期和当前日期是否安全?或者这可以被操纵吗?
- teradata - 将 Teradata SQL Assistant 设置为默认 SQL 引擎
- loopbackjs - 如何为环回数据源编写单元测试