为什么java没有正确转换我的时间?

del*_*ber 0 java

我有以下方法将String转换为Date对象

public Date convertTime(String time) {

    SimpleDateFormat parser = new SimpleDateFormat("d/M/y HH:mm:ss.S");
    try {
        return parser.parse(time);
    }
    catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }


}
Run Code Online (Sandbox Code Playgroud)

我有以下方法将其转换回来

public String dateToTimeMillis(Date date) {

    //StringBuffer formatted = new StringBuffer();
    SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss.S");
    try {
        String formatted = parser.format(date);
        return formatted;
    }
    catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }


}
Run Code Online (Sandbox Code Playgroud)

以下测试代码

    TraderLib lib = new TraderLib();
    Date d1 = lib.convertTime("01/11/2011 10:41:09.045");
    System.out.println(lib.dateToTimeMillis(d1));
Run Code Online (Sandbox Code Playgroud)

返回10:41:09.45

我如何保留0?

ret*_*one 5

您应该将格式设置为:

new SimpleDateFormat("d/M/y HH:mm:ss.SSS");
Run Code Online (Sandbox Code Playgroud)

保留3位数.从文档:

"数字:对于格式化,模式字母的数量是最小位数,较短的数字是零填充到此数量.对于解析,忽略模式字母的数量,除非需要分隔两个相邻的字段."