Java-毫秒 (SSS) 未使用 SimpleDateFormat 进行解析

标签 java parsing date time simpledateformat

基本上,我正在尝试将日期/时间解析为 Java,但在尝试解析毫秒时遇到问题。

要解析的数据示例:a[0] = 16/03/2015、a[1] = 10:00:18.120

我读入两个值并将它们连接起来。 获取: dateTime = (java.lang.String) "16/03/2015 10:00:18.120" 正如您所看到的,当我调试它时,该字符串具有毫秒数。从这里我将其解析为 SimpleDateFormat。它有效 - 但不显示毫秒

DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS", Locale.ENGLISH);
String dateTime;
dateTime= a[0]+" "+a[1];
Date d = df.parse(dateTime);

当前输出:d = (java.util.Date) Mon Mar 16 10:00:18 GMT 2015

感谢您的帮助。

最佳答案

您的代码很好,但您对结果的解释不正确。正如一条评论中正确提到的,java.util.Date 类的方法 toString() 不输出毫秒部分。但毫秒部分仍然是结果对象状态的一部分。证明:

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS", Locale.ENGLISH);
String dateTime = "16/03/2015 10:00:18.120";
Date d = df.parse(dateTime);
System.out.println(d); // Mon Mar 16 10:00:18 CET 2015
System.out.println(d.getTime()); // 1426496418120
System.out.println("millisecond-part=" + (d.getTime() % 1000)); // millisecond-part=120

所以一切都很好。您甚至可以使用相同的字符串(或 SimpleDateFormat 的另一个实例 - 可能具有不同的模式、区域设置和时区)将结果格式化回字符串。

如果java.util.Date被正确实现为值类型,那么该类的发明者就会注意使toString()的输出代表对象的完整准确状态,但它还没有发生 - 另一个例子说明为什么这个类被破坏了。

关于Java-毫秒 (SSS) 未使用 SimpleDateFormat 进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315437/

相关文章:

java - 为什么 ExpectedException 在 Spring 中被弃用

java - 运营商优先?

java - 如果属性为空,如何让 MapStruct 不生成包装器对象?

java - 确定用于调用子类中方法的父类(super class)引用

parsing - 如何从 URL 解析页面名称?

ios - 如何通过php web服务成功登录

java - 如何对十进制数执行 Integer.parseInt() ?

javascript - 为什么 X-editable 日期选择器值格式不同?

某些时区的 Java util dateformat 毫秒似乎不正确

c# - PCL 中的日期计算