Alt*_* Hu 7 java simpledateformat
我想解析一个时间戳,就像这样 - "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();
}
Run Code Online (Sandbox Code Playgroud)
SSin SimpleDateFormat是毫秒.你有6739毫秒,这意味着你额外增加了6.7秒.也许您可以截断6739to 673(或者如果您愿意,将其四舍五入674),以便可以正确解析为毫秒.
小智 5
似乎不可能使用 SimpleDateFormat 来表达比毫秒更精细的时间。发生的情况是,当您输入 6739 时,Java 将其理解为 6739 毫秒,即 6 秒和 739 毫秒,因此观察到 6 秒的差异。
检查这些,它解释得很好: String-Date conversion with nanoseconds Java date parsing with microsecond or nanosecond accuracy