0

MMM-dd-yyyy 形式の文字列をタイムスタンプに解析しようとしています。私はこれを以下のようにしています:

String dateto = "Dec-01-2013";
try{
    DateFormat datetoDF = new SimpleDateFormat("MMM-dd-yyyy");
    Date datetoD = (Date)datetoDF.parse(dateto);
    datetoTS = new Timestamp(datetoD.getTime());
}
catch(ParseException e)
{
    log.error("RegisteredUserDataProvider:getFilteredUsers:ParseException: " + e.getMessage());
    String stackTrace = ExceptionUtils.getStackTrace(e);
    log.error(stackTrace);
}

3 月でしか機能しないのはなぜですか (たとえば、2013 年 3 月 1 日)。他の月で他の日付を指定すると、

java.text.ParseException: Unparseable date: "Dec-01-2013"

毎月、変数のセットをチェックしました: "Dec-01-2013", "Nov-01-2013", "Oct-01-2013", "Sep-01-2013", "Aug-01- 2013"、"2013 年 7 月 1 日"、"2013 年 6 月 1 日"、"2013 年 5 月 1 日"、"2013 年 4 月 1 日"、"2013 年 2 月 1 日"、"2013 年 1 月 1 日"および「2013 年 3 月 4 日」。3月にのみ機能します。理由は何ですか?

4

3 に答える 3

4

デフォルトLocaleが違うようです。

DateFormat datetoDF = new SimpleDateFormat("MMM-dd-yyyy", Locale.ENGLISH);

デフォルトのロケールでは、「Jan」、「Feb」などの単語が認識されない場合があります。

于 2013-03-07T11:26:33.357 に答える
0

これを使用できます。

 String dateto = "Dec-01-2013";
 Date datetoD = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(dateto );
 datetoTS = new Timestamp(datetoD.getTime());
于 2013-03-07T11:34:00.687 に答える