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

时间:2011-05-13 01:16:26

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


}

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

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;
    }


}

以下测试代码

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

返回10:41:09.45

如何保留0?

2 个答案:

答案 0 :(得分:5)

您应将格式设置为:

new SimpleDateFormat("d/M/y HH:mm:ss.SSS");

保留3位数字。来自documentation

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

答案 1 :(得分:3)

使用SimpleDateFormat parser = new SimpleDateFormat("d/M/y HH:mm:ss.SSS");