将字符串解析为时间戳不起作用。 Java的

时间:2013-03-07 11:17:40

标签: java

我正在尝试将格式为MMM-dd-yyyy的字符串解析为Timestamp。我这样做如下:

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);
}

为什么它仅适用于March(例如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”​​,“Jul-01-2013”​​,“Jun -01-2013“,”May-01-2013“,”Apr-01-2013“,”Feb-01-2013“,”Jan-01-2013“和”Mar-04-2013“。它只适用于Mar.任何想法为什么?

3 个答案:

答案 0 :(得分:4)

您的默认Locale看起来不同。

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你可以使用它。

 String dateto = "Dec-01-2013";
 Date datetoD = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(dateto );
 datetoTS = new Timestamp(datetoD.getTime());