【问题标题】:Java. Cant parse date using DateFormat爪哇。无法使用 DateFormat 解析日期
【发布时间】:2012-10-23 07:43:07
【问题描述】:

我有一个日期字符串:

Thu Feb 20 08:00:00 EET 1992

并使用此代码对其进行格式化:

String datePatternFrom = "EEE MMM dd HH:mm:ss ZZZ yyyy";
String datePatternTo = "MMM dd, yyyy";
String prettyDate = "";

try {
    DateFormat fromFormatter = new SimpleDateFormat(datePatternFrom);
    Date date = (Date)fromFormatter.parse(userBirthday.toString());

    DateFormat toFormatter = new SimpleDateFormat(datePatternTo);
    prettyDate = toFormatter.format(date);

} catch (ParseException e) {
    e.printStackTrace();
}

为什么我会收到异常?

java.text.ParseException: Unparseable date: "Thu Feb 20 08:00:00 EET 1992" (at offset 0)

【问题讨论】:

  • 我的电脑也不例外。你用的是什么java版本? 32 位,64 位?
  • userBirthday 是 Date 对象。当我将它转换为字符串()时,我有我提到的日期..
  • 如果userBirthday 已经是Date,为什么不直接使用prettyDate = toFormatter.format(userBirthday);
  • 弗拉基米尔格式函数参数必须是字符串...
  • 它是 Date docs.oracle.com/javase/1.4.2/docs/api/java/text/… 。甚至你的date 也是Date 类型

标签: java date date-format


【解决方案1】:

问题在于工作日和月份以及您的语言环境。 Thu 是英文,所以你必须告诉解析器它应该使用英文工作日:

DateFormat fromFormatter = new SimpleDateFormat(datePatternFrom, Locale.US);

这将适用于您的模式。 如果您不指定区域设置,将使用默认设置,但并不总是英语。 ;-)

【讨论】:

  • 我认为这是正确的答案。 @user1766287 可以验证一下吗?
  • 谢谢。抱歉耽搁了:)
【解决方案2】:

这可能是您的语言环境。尝试使用 datePatternFrom 制作 SDF,给它一个日期以 format 并在某处打印。看看会弹出什么。

【讨论】:

    【解决方案3】:

    可能您的 userBirthday 对象不是作为 java.util.Date 对象创建的。你可以试试System.out.println(userBirthday.getClass().getName());吗?

    【讨论】:

    • 为什么?字符串的开头有星期几。还是您的意思是他们应该在子字符串上尝试一下?
    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多