我想分析日期字符串像"February 7, 2011"
使用"M dd, yyyy"
格式。 但是,我得到一个异常。
Answer 1:
- 如其他人所说你解析字符串不正确
- 要正确分析
February
,你需要使用英语语言环境,或者如果您的缺省语言环境不是英文则可能会失败
DateFormat df = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
Date dt = df.parse("February 7, 2011");
Answer 2:
试试这个代码。 我有两个日期跑了“二零一二年十一月二十○日”和“1957年1月4日”,得到了这样的输出:
arg: November 20, 2012 date: Tue Nov 20 00:00:00 EST 2012
arg: January 4, 1957 date: Fri Jan 04 00:00:00 EST 1957
它工作正常。 您正则表达式是错误的。
package cruft;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* DateValidator
* @author Michael
* @since 12/24/10
*/
public class DateValidator {
private static final DateFormat DEFAULT_FORMATTER;
static {
DEFAULT_FORMATTER = new SimpleDateFormat("MMM dd, yyyy");
DEFAULT_FORMATTER.setLenient(false);
}
public static void main(String[] args) {
for (String dateString : args) {
try {
System.out.println("arg: " + dateString + " date: " + convertDateString(dateString));
} catch (ParseException e) {
System.out.println("could not parse " + dateString);
}
}
}
public static Date convertDateString(String dateString) throws ParseException {
return DEFAULT_FORMATTER.parse(dateString);
}
}
Answer 3:
您将要使用的“MMM DD,YYYY”
SimpleDateFormat("MMM dd, yyyy").parse("February 7, 2011")
见的SimpleDateFormat
Answer 4:
假设你正在使用SimpleDateFormat
,当月格式不正确,应该是MMM dd, yyyy
MMM
将匹配一个月的长文本格式:
String str = "February 7, 2011";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy");
Date date = format.parse(str);
文章来源: java does not parse for 'M dd, yyyy' date format