当前位置: 首页 > 面试题库 >

Java-无法解析的日期,需要与“ GMT-0400”匹配的格式

楮法
2023-03-14
问题内容

我有以下Java:

DateFormat formatter = new SimpleDateFormat(
    "EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.ENGLISH);
Calendar cal = Calendar.getInstance();
cal.set(2011, Calendar.APRIL, 1);
out.println(formatter.format(cal.getTime()));
out.println();

Date date;
try {
    date = formatter
        .parse("Fri Apr 01 2011 00:00:00 GMT-0400 (Eastern Daylight Time)");
} catch (ParseException e) {
    out.println("Failed to parse date: " + e.getMessage());
    e.printStackTrace(out);
}

这是在servlet中,并且Calendar-constructed日期显示为:

星期五2011年4月1日16:42:24 EDT-0400(东部夏令时间)

看起来与我要解析的日期字符串的格式相同,除了EDT-0400与所需的相比GMT-0400。尝试解析日期字符串时,代码失败:

java.text.ParseException:无法解析的日期:“星期五2011年4月1日00:00:00 GMT-0400(东部夏令时间)”

我如何解析这样的字符串?这来自存储在WebSQL本地存储中的Sencha Touch 1.1.1模型中的JavaScript日期。


问题答案:

由于某种原因,GMT-0400无法正常工作,而UTC-0400正在正常工作。您可以将GMT替换为UTC。

请注意,这部分将被完全忽略-时区将根据括号中的内容进行解析(至少在我的机器上为JDK 6)



 类似资料:
  • 问题内容: 我正在尝试解析一个日期,但是奇怪的是我遇到了一个例外。 这是代码: 例外是: 我已经阅读了文档,我认为我的模式是正确的。所以我不明白… 问题答案: 这可能是因为你计算机上的默认语言环境不是英语。 你应该使用: 代替。

  • 问题内容: 这是我需要处理的日期格式 但是我不了解最后两个部分。是固定的吗?应该是这样吗? 问题答案: 不,它不是固定的。这是一个时区。您可以将其与日期格式匹配。 更准确地说,采用SimpleDateFormat格式: 匹配零件。 是固定的。用一些引号将其转义。 z匹配部分。(PDT =太平洋夏令时间)。 PDT周围的括号是固定的。用括号将其转义。 您可以使用以下格式解析日期: 另一个要点 :包含

  • 问题内容: 我想解析日期字符串,例如使用格式。但是我有一个例外。 问题答案: 您的解析字符串不正确,正如别人提到的那样 要正确解析,您需要使用英语语言环境,否则,如果您的默认语言环境不是英语,则可能会失败 DateFormat df = new SimpleDateFormat(“MMM dd, yyyy”, Locale.ENGLISH); Date dt = df.parse(“Februar

  • 问题内容: 我必须在Java中使用自定义日期格式。尽管Java不提供对微秒的支持,但它包含微秒。因此,我用零填充了时间模式,在格式化时它可以很好地工作,但是我无法使用该模式解析日期字符串。 有没有简单的解决方法,还是我必须自己处理微秒(使用String函数)? java.text.ParseException:无法解析的日期:“ 2010-01-25-12.40.35.769000” 问题答案:

  • 问题内容: 我有一个字符串日期“ 31-Dec”和模式“ dd-MMM”。接下来的代码 产生异常 我做错什么了? 谢谢! 问题答案: 一个问题可能是您不是英语。试试这个: 这为我返回: 1970年12月31日星期四00:00:00欧洲中部时间 由于日期字符串中缺少年份,因此您会看到它会自动插入为年份。

  • 我想以yyyy-mm-dd格式存储今天的日期。在存储之前,我将今天的日期格式化,并再次解析格式化后的字符串。它以不同于我想要的格式给出了输出日期。我如何获得日期,将其格式化为' yyyy-mm-dd '并再次将其转换为日期,并希望输出格式为' yyyy-mm-dd '。请找到下面的代码,告诉我哪里错了 我得到的上述代码的输出是星期四 Mar 07 00:00:00 GMT 2013.但我希望输出为