无法解析日期并获得毫秒数

sa_*_*nyc 0 java date-format simpledateformat

我试图将一个字符串解析为日期.

我在用

new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS").parse("20140923-14:32:34.456")
Run Code Online (Sandbox Code Playgroud)

我的输出是:(日期对象)

Tue Sep 23 14:32:34 EDT 2014
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我没有得到毫秒.我需要日期和毫秒,而不仅仅是毫秒.

预期输出:(日期对象)

Tue Sep 23 14:32:34.456 EDT 2014
Run Code Online (Sandbox Code Playgroud)

谢谢

PS:我最后不想要一个字符串对象,而是一个Date.

Jon*_*eet 5

你只是打印出调用的结果,Date.toString()不包括毫秒.如果你打印出调用getTime()日期的结果,你会看到它以"456"结束,表明它已经解析了毫秒.

另外,不要被输出的"EDT"部分所迷惑Date.toString().这并不意味着这是一个Date"在"EDT中的对象... a Date根本没有时区; 从unix时代开始,它只是几毫秒.

我建议您明确设置您的时区SimpleDateFormat- 即使您故意将其设置为系统默认时区.通过明确地这样做,您向读者清楚地表明您打算使用该时区,而不仅仅是您没有考虑它.您也应该对语言环境采用相同的方法 - 在这种情况下我可能会指定Locale.US,对于专为机器解析而设计的格式而言,这通常是一个很好的选择.