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 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时,您不能期望date.toString()返回相同的格式 - 它们是不相关的。

您将需要使用DateFormat#format(Date)为了获得给定格式的String,或者您将获得系统/实现默认值。

关于java - 日期时间解析器出现格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299660/

相关文章:

java - 使用 @JsonString 注释在 Google Endpoint 中生成 JSON

java - 以类为键的 TreeMap

Java - 如何在 swings 中添加换行符

java - SLF4J 记录器绑定(bind)不起作用

java - Facade模式的使用

java - 声明的包裹与预期的包裹不匹配

Java 将 String[] 转换为 int[]

java - 在 Java 的 UI 中显示金钱的正确方法是什么?

java - findLoadedClass() 返回 null

java - 如何在Java中向onClick函数传递参数?(Android应用程序开发)