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 月(例如 Mar-01-2013)?当我给出其他月份的任何其他日期时,我得到

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 日”。它仅适用于 Mar。知道为什么吗?

4

3 回答 3

4

看起来你的默认值Locale是不同的。

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

您的默认语言环境可能无法识别“Jan”、“Feb”等词。

于 2013-03-07T11:26:33.357 回答
1

所有关于本地或您正在通过Dec -01-2013空间传递日期。提供没有空格的正确日期,例如,如果您的默认设置为韩国,则Dec-01-2013尝试打印,那么您肯定会收到此异常,然后尝试使用 likeLocale.getDefault()

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

于 2013-03-07T11:38:26.527 回答
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 回答