我正在尝试将格式为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.任何想法为什么?
答案 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());