我想解析一个时间戳,像这样 - "2016-03-16 01:14:21.6739"
。但是当我使用 SimpleDateFormat
解析它时,我发现它输出了一个不正确的解析值。它会将 6739 毫秒转换为 6 秒,还剩 739 毫秒。它将日期转换为这种格式 - Wed Mar 16 01:14:27 PDT 2016
。为什么秒部分从 21 秒变为 27 秒(增加 6 秒?)。以下是我的代码片段:
final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
String parsedate="2016-03-16 01:14:21.6739";
try {
Date outputdate = sf.parse(parsedate);
String newdate = outputdate.toString(); //==output date is: Wed Mar 16 01:14:27 PDT 2016
System.out.println(newdate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最佳答案
似乎不可能使用 SimpleDateFormat 来表达比毫秒更细粒度的时间。 发生的事情是,当您输入 6739 时,Java 将其理解为 6739 毫秒,即 6 秒和 739 毫秒,因此观察到 6 秒的差异。
检查这些,解释得很好: String-Date conversion with nanoseconds Java date parsing with microsecond or nanosecond accuracy
关于java - SimpleDateFormat 无法解析超过 4 位的毫秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055717/