【问题标题】:Format error with DateTime parserDateTime 解析器的格式错误
【发布时间】:2012-05-05 04:37:54
【问题描述】:

我有这个方法:

public Date parseDate(String dateStr) {
      try {
        SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z");
        return sdfSource.parse(dateStr);
      }
      catch(Exception e) {
        throw new RuntimeException("Error occurred while parsing date: " + dateStr);
      }
    }

我的单元测试如下:

public void testEDTDate() throws Exception {
      DateFormatConverter converter = new DateFormatConverter();
      Date date = converter.parseDate("2009-09-15 15:28:20.0 EDT");   
      System.out.println("Converted Date: " + date.toString());
  }

输出是:

Wed Sep 16 02:28:20 ICT 2009

这导致单元测试失败。预期结果是:

Tue Sep 15 15:28:20.0 EDT 2009

当它缺少第二个时,输出的格式也是错误的。我应该如何修复以按预期显示日期?

【问题讨论】:

标签: java


【解决方案1】:

当您使用给定格式解析 date 时,您不能期望 date.toString() 返回相同的格式 - 它们是不相关的。

您需要使用DateFormat#format(Date) 才能获得给定格式的String,否则您将获得系统/实现默认值。

【讨论】:

  • 当我按照你所说的那样使用 DateFormat#format(Date) 但结果仍然是 ICT 时区:2009-09-16 02:28:20.0 ICT。我希望将结果字符串作为给定的输入
  • DateFormat#setTimeZone(TimeZone)怎么样?
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 2016-08-09
  • 2013-09-24
相关资源
最近更新 更多