Java SimpleDateFormat时间诡计多端

shu*_*iar 2 java date simpledateformat

我试图将日期字符串解析为java.util.Date使用java.text.SimpleDateFormat; 但是,生成的格式化日期是错误的.

这是一个显示问题的测试用例:

@Test
public void testSimpleDateFormat() throws Exception {
    String dateString = "2016-03-03 11:50:39.5960000";
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSS");
    Date date = format.parse(dateString);

    assertEquals(dateString, format.format(date));
}
Run Code Online (Sandbox Code Playgroud)

这导致以下失败:

org.junit.ComparisonFailure: 
Expected :2016-03-03 11:50:39.5960000
Actual   :2016-03-03 13:29:59.0000000
Run Code Online (Sandbox Code Playgroud)

日期是正确的,但小时,分钟,秒和毫秒都是错误的.为什么java.text.SimpleDateFormat搞砸我约会的时间?

JB *_*zet 8

你的模式说这5960000是几毫秒.这代表5960秒,因此大约1小时39分钟,这解释了您获得的日期与初始日期之间的差异.