基本上,我正在尝试将日期/时间解析为 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/