正确的DateFormat来解析这个字符串?

时间:2018-06-18 14:56:14

标签: java

当我使用此代码解析日期字符串时,时间被错误地解析。此代码打印Wed Feb 14 15:06:06 EST 2018。我应该使用什么日期格式来解析此输入?

String input = "2018-02-14 14:57:59.487927";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");

System.out.println(formatter.parse(input));

1 个答案:

答案 0 :(得分:1)

到目前为止,我的测试最好的apporach就是使用DateTimeFormatter来计算你想要的东西。

String input = "2018-02-14 14:57:59.487927";
DateTimeFormatter r =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDateTime a =LocalDateTime.parse(input,r);
System.out.println(a);

这样你就会得到

Hour: 14
Minite: 57
Second: 59
Nano: 487927000

使用SimpleDateFormat,你总会得到毫秒级的927,到目前为止,你总是会失去精确度。

m   Minute in hour      Number  30
s   Second in minute    Number  55
S   Millisecond         Number  978

到目前为止,您最好的预测只有3位数,SimpleDateFormat中没有纳秒。

我建议使用新的Java 8 Date库。