在Java中解析字符串中的不同日期格式
我有一个字符串,可能包含以下任何格式的日期:
2001-01-05 (yyyy-mm-dd)
2001/01/05 (yyyy/mm/dd)
01/05/2001 (dd/mm/yyyy)
01-05-2001 (dd-mm-yyyy)
2001 january 5
2001 5 january
january 5 2001
5 january 2001
january 5
5 january
我希望能够解析特定字符串并从中提取日期对象
我的做法如下:
String[] date_formats = {
"yyyy-MM-dd",
"yyyyy/MM/dd",
"dd/MM/yyyyy",
"dd-MM-yyyy",
"yyyy MMM dd",
"yyyy dd MMM",
"dd MMM yyyy",
"dd MMM",
"MMM dd",
"dd MMM yyyy"};
String output_date = null;
for (String formatString : date_formats)
{
try
{
Date mydate = new SimpleDateFormat(formatString).parse(token);
SimpleDateFormat outdate = new SimpleDateFormat("yyyyMMdd");
output_date = outdate.format(mydate);
break;
}
catch (ParseException e) {
System.out.println("Next!");
}
}
这似乎不像预期的那样有效。特别是像2001年1月5日这样的日子。我该怎么做呢
# 1 楼答案
与测试“yyy-MM-dd”,然后测试“yyy/MM/dd”,然后测试“yyy.MM.dd”(在许多国家使用)等不同,您可以从
这样,所有的点和破折号都将替换为“/”,您可以减少格式和尝试的数量
# 2 楼答案
您可以使用
new Date()将返回当天的日期,您可以将其更改为您想要的任何日期
所以,如果你像这样修改代码:
你最终会得到这些: