使用DateTime解析器格式化错误

时间:2012-04-24 14:07:37

标签: java

我有这个方法:

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

当缺少第二个时,输出格式也错误。我应该如何确定按预期显示日期?

1 个答案:

答案 0 :(得分:3)

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

您需要使用DateFormat#format(Date)以获得给定格式的String,否则您将获得系统/实现默认的任何内容。