基本上我尝试将日期/时间解析为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
感谢您的帮助。
答案 0 :(得分:1)
您的代码很好,但不是您对结果的解释。正如在一条评论中正确提到的,类toString()
的方法java.util.Date
不输出毫秒部分。但毫秒部分仍然是结果对象状态的一部分。证明:
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()
的输出表示对象的整个确切状态,但它没有发生 - 另一个例子,为什么这个课程被打破了。
答案 1 :(得分:0)
使用DateFormat.format(Date date)
功能可能符合您的要求
Date date = new Date();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS",Locale.ENGLISH);
String dateTime;
dateTime=df.format(date);
String[] a=dateTime.split(" ");
System.out.println(a[0]+" "+a[1]);
答案 2 :(得分:0)
phpdbg> ev runkit_constant_remove('STDIN')
[PHP Warning: runkit_constant_remove(): Only user defined constants may be removed. in eval()'d code on line 1]
答案 3 :(得分:0)
试试这个:
String[] a = new String[]{"16/03/2015", "10:00:18.120"};
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS", Locale.ENGLISH);
String dateTime = a[0] + " " + a[1];
try {
Date d = df.parse(dateTime);
System.out.println(d.getTime());//Returns milliseconds
} catch (ParseException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
结果:1426492818120