2

私はこの方法を持っています:

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

秒が欠落している場合、出力の形式も間違っています。期待どおりに日付を表​​示するにはどうすればよいですか?

4

1 に答える 1

3

特定の形式を使用して を解析する場合、同じ形式を返すdateことは期待できませんdate.toString()。それらは無関係です。

DateFormat#format(Date)特定の形式でを取得するには、を使用する必要がありStringます。そうしないと、システム/実装のデフォルトが何であれ取得されます。

于 2012-04-24T14:13:16.120 に答える