java不解析'M dd,yyyy'日期格式

时间:2012-10-20 14:33:19

标签: java date-format

我想使用"February 7, 2011"格式解析"M dd, yyyy"之类的日期字符串。但我得到了一个例外。

4 个答案:

答案 0 :(得分:2)

试试这段代码。我用两个日期“2012年11月20日”和“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);
    }
}

答案 1 :(得分:0)

你会想要使用“MMM dd,yyyy”

SimpleDateFormat("MMM dd, yyyy").parse("February 7, 2011")

请参阅SimpleDateFormat

答案 2 :(得分:0)

假设您使用的是SimpleDateFormat,月份格式不正确,应为MMM dd, yyyy

MMM将匹配当月的长文本格式:

String str = "February 7, 2011";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy");
Date date = format.parse(str);

答案 3 :(得分:0)

  • 您的解析字符串不正确,如其他人所述
  • 要正确解析February,您需要使用英语区域设置,否则如果您的默认语言环境不是英语,则可能会失败
DateFormat df = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
Date dt = df.parse("February 7, 2011");