【问题标题】:SimpleDateFormat can't parse DateSimpleDateFormat 无法解析日期
【发布时间】:2013-05-23 10:19:07
【问题描述】:

到目前为止,我在解析字符串时遇到了一点问题。我在stackoverflow上搜索了一个想法,我得到了答案,但它仍然无法正常工作..所以..

我试图解析一个看起来像这样的字符串

1985 年 1 月 8 日星期二 00:00:00 CET

我正在尝试的是这个..

private Date getDateFromString(String sDate)
{
    String dateFormat = "EEE MMM dd HH:mm:ss z yyyy";

    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    sdf.setTimeZone(TimeZone.getTimeZone("CET"));  
    Date newDate = null;
    try {
        newDate = sdf.parse(sDate);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return newDate;

}

当然有人可以帮助我 :-) 谢谢你的预测

【问题讨论】:

  • 这段代码对我有用。你使用 java.util.Date 还是 java.sql.Date 作为导入?
  • 在我添加了 adenoyelle 所说的之前,我没有,你必须将此语言环境设置为默认值。
  • 错误/问题是什么?
  • 你遇到了什么问题?
  • 我认为问题在于他得到 java.text.ParseException: Unparseable date: "Tue Jan 08 00:00:00 CET 1985"。这就是我在添加美国语言环境之前得到的(我有瑞典语言环境默认设置)。

标签: java string parsing date


【解决方案1】:

你试过用日历吗?

public Date getDateFromString(String sdate) {
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    Calendar car = Calendar.getInstance();
    Date ndate = null;
    try {
        ndate = sdf.parse(sdate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return ndate;
}

【讨论】:

    【解决方案2】:

    问题在于“Tue”和“Jan”的解释,因为您没有指定任何语言环境(在这种情况下,它采用默认语言环境 (Locale.getDefault())

    试试:

    new SimpleDateFormat(dateFormat, new Locale("en_US"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多