是否可以在Java中解析这些日期:
Sunday February 09th, 2014 or Sunday February 21st, 2014.
我使用SimpleDateFormat搜索方式。感谢
答案 0 :(得分:3)
在使用模式nd|rd|th|st
解析字符串之前,此代码仅使用带有lookbehind的正则表达式来替换所有出现的EEE MMM dd, yyyy
。
String value = "Sunday February 09th, 2014";
String formatted = value.replaceAll("(?<=\\d)(nd|rd|th|st)", "");
System.out.println(formatted);
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd, yyyy");
Date date = format.parse(formatted);
答案 1 :(得分:2)
您可以使用simpleDateformat,尝试使用mask:
"E, dd MMMMM yyyy"
例如:2014年2月9日星期日
在simpleDateformat中无法添加th,rd等...你必须手动执行此操作:
// http://code.google.com/p/guava-libraries
import static com.google.common.base.Preconditions.*;
String getDayOfMonthSuffix(final int n) {
checkArgument(n >= 1 && n <= 31, "illegal day of month: " + n);
if (n >= 11 && n <= 13) {
return "th";
}
switch (n % 10) {
case 1: return "st";
case 2: return "nd";
case 3: return "rd";
default: return "th";
}
}
答案 2 :(得分:0)
SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy");
String dateInString = "Fri, June 7 2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
尝试这样的事情。参考:http://www.mkyong.com/java/how-to-convert-string-to-date-java/
答案 3 :(得分:0)
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
pdt.setStartRule(DateFields.APRIL, 1, DateFields.SUNDAY, 2*60*60*1000);
pdt.setEndRule(DateFields.OCTOBER, -1, DateFields.SUNDAY, 2*60*60*1000);
// Format the current time.
SimpleDateFormat formatter
= new SimpleDateFormat ("yyyy.mm.dd e 'at' hh:mm:ss a zzz");
Date currentTime_1 = new Date();
String dateString = formatter.format(currentTime_1);
// Parse the previous string back into a Date.
ParsePosition pos = new ParsePosition(0);
Date currentTime_2 = formatter.parse(dateString, pos);
请参阅此以获取更多知识; http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html