Java 日期时间分析器的格式错误

Java 日期时间分析器的格式错误,java,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 RuntimeExc

我有这个方法:

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

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

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


您需要使用以获得给定格式的
字符串
,否则您将获得系统/实现默认值。

当我使用DateFormat时,正如您所说,格式(日期),但结果仍然是ICT时区:2009-09-16 02:28:20.0 ICT。我希望结果字符串是关于使用
DateFormat#setTimeZone(TimeZone)
的puthow中给出的字符串。请检查此项。。