【问题标题】:Convert String to Date in Java is adding some extra minutes在 Java 中将字符串转换为日期会增加一些额外的时间
【发布时间】:2025-12-09 02:45:02
【问题描述】:

我在 Java 中将字符串转换为日期,但我遇到了一个问题,它为结果日期增加了一些额外的分钟数。

字符串的格式如下“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 编码的新手,我已经阅读了很多帖子,但对我来说一切似乎都很正常,我不知道为什么会这样。

一些想法?

【问题讨论】:

    标签: java date


    【解决方案1】:

    试试这个:

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

    您使用 's' 而不是 'S' 表示毫秒。

    【讨论】:

      【解决方案2】:

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

      使用yyyy-MM-dd HH:mm:ss.sss 的格式,您指定了两次秒字段,因此您实际上是在尝试格式化日期时间“2015-06-11 20:17:56 oh-wait-I-mean-873 -seconds”,这就是结果时间相差约 14 分钟的原因。

      【讨论】:

        【解决方案3】:

        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 --> 毫秒

        【讨论】: