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

时间:2015-07-09 10:59:39

标签: 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

感谢您的帮助。

4 个答案:

答案 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);
    }

结果:1​​426492818120