在Java中将String转换为Date会增加一些额外的时间

时间:2015-06-11 22:20:10

标签: java date

我在Java中将字符串转换为Date,但是我遇到了问题它为结果Date添加了一些额外的分钟。

字符串格式为“yyyy-MM-dd HH:mm:ss.sss”,我创建了这个函数:

public static Date parseISO8601(String date) {
    Date result = null;

    try {

        if (!TextUtils.isEmpty(date)) {
            SimpleDateFormat dateFormat = new SimpleDateFormat(
                    ISO8601_DATE_FORMAT);

            result = dateFormat.parse(date);
        }

    }
    catch (Exception ex){
        return null;
    }
    return result;
}

public static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.sss";

当我使用此字符串“2015-06-11 20:17:56.873”时,结果是“Thu Jun 11 20:31:33 CST 2015”。我是Java的新编码,我已经阅读了很多帖子,但对我而言,一切似乎都很正常,我不知道为什么会发生这种情况。

一些想法?

3 个答案:

答案 0 :(得分:6)

请改为尝试:

yyyy-MM-dd HH:mm:ss.SSS

你使用's'而不是'S'代表millis。

答案 1 :(得分:4)

您想使用yyyy-MM-dd HH:mm:ss.SSS,它使用" SSS" (毫秒)而不是" sss" (秒)。

格式为yyyy-MM-dd HH:mm:ss.sss,您指定秒字段两次,因此您有效地尝试格式化日期时间" 2015-06-11 20:17:56哦等待 - I-mean-873-seconds",这就是为什么结果时间大约需要14分钟。

答案 2 :(得分:1)

yyyy-MM-dd HH:mm:ss.sss替换为yyyy-MM-dd HH:mm:ss.SSS

根据http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

s - >第二

S - >毫秒