0

format"February 7, 2011"を使用するように日付文字列を解析したい。"M dd, yyyy"しかし、例外があります。

4

4 に答える 4

2

このコードを試してください。「2012年11月20日」と「1957年1月4日」の2つの日付で実行し、次の出力を取得しました。

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);
    }
}
于 2012-10-20T14:36:51.777 に答える
0
  • 他の人が述べているように、解析文字列が正しくありません
  • 正しく解析Februaryするには、英語のロケールを使用する必要があります。そうしないと、デフォルトのロケールが英語でない場合に失敗する可能性があります。
DateFormat df = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
Date dt = df.parse("February 7, 2011");
于 2012-10-20T14:42:58.907 に答える
0

「MMMdd、yyyy」を使用することをお勧めします

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

SimpleDateFormatを参照してください

于 2012-10-20T14:37:54.007 に答える
0

を使用していると仮定するとSimpleDateFormat、月の形式が正しくないため、次のようになります。MMM dd, yyyy

MMM月の長いテキスト形式と一致します。

String str = "February 7, 2011";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy");
Date date = format.parse(str);
于 2012-10-20T14:38:15.417 に答える