【问题标题】:java.text.ParseException: Unparseable date: "-"java.text.ParseException:无法解析的日期:“-”
【发布时间】:2014-07-30 09:20:54
【问题描述】:

我有以下代码

   private String formatDate(String date)
    throws XXXXException
{
    String str = "no date";
    if (!StrUtil.isEmpty(date) && !"null".equals(date))
    {
        DateFormat dateformatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,  
        DateFormat.SHORT);
        Date dateDate;
        str = "";
        try
        {
            dateDate = dateformatter.parse(date);
            str = m_formatter.dateToString(dateDate);
        }
        catch (ParseException e)
        {
            LogFactory.getLogger(XYZ.class).error("", e);

        }
    }

    return str;
 }

在 websphere v7.0 中部署 ear 的用户之一看到以下内容 异常

 java.text.ParseException: Unparseable date: "-"
 at java.text.DateFormat.parse(DateFormat.java:337)
 .
 .
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1661) 
 .

我认为使用 weblogic 部署时不会出现此问题。此外,我也无法使用 websphere v7.0 在本地复制该问题。问题可能出在 websphere 上吗 http://www-01.ibm.com/support/docview.wss?uid=swg1PM54864 ??? 或者我可以用我的代码做些什么来帮助我解决这个问题?

【问题讨论】:

  • 顺便说一句,StrUtil.isEmpty(date)date.isEmpty() 有什么优势?请注意,您的代码不一致。它将为某些(无效)输入返回"no date",为某些其他(也是无效)输入返回""。您应该为所有无效输入决定一个结果(或行为)。而且我想我最好不要问XXXXException是什么……

标签: java date-format simpledateformat


【解决方案1】:

当我查看 DateFormat.SHORT (http://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html) 的 java 文档时,它提到了一个“/”字符作为分隔符。所以'-'确实是一个无效字符。

我还注意到格式取决于区域设置。那么您的 weblogic 和 websphere 服务器是否可能具有不同的语言环境?

【讨论】:

  • 感谢您的努力。这看起来很有用,但我将语言环境更改为中文,使用带有 hiphens 的日期格式,我仍然无法在本地复制该问题。还有其他想法吗??
【解决方案2】:

问题已解决。发生这种情况是因为我们使用的是 xslt 转换。 在contentHandler实现文件中,characters函数没有正确实现。

   public void characters(char ch[], int start, int length)
    throws SAXException
{
    // Reset the value
    m_value.setLength(0);
    m_value.append(ch, start, length);
    isPut = true;
}

问题出在 setLength(0) 上。它适用于 weblogic 而不是 websphere,因为 weblogic 具有比 websphere 更大的缓冲区或其他东西。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多