简单日期格式会间歇性地返回错误的日期

时间:2018-08-24 08:35:18

标签: java android simpledateformat

我正在将Date转换为yyyy-MM-dd HH:mm:ss格式的字符串格式,以保存在sqlite数据库中 下面是声明为简单日期格式的对象

public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

有时您会在日期前加上一对零,如下图所示

示例错误日期返回如下

2018-08-25 02:32:0000

2018-08-25 02:32:0049

2018-0008-25 02:32:50

2018-08-24 0023:32:50

2018-08-0024 23:32:50 enter image description here

我创建了自定义功能来更正这个错误的日期。但是我想知道这个问题的确切原因。

下面是代码

public static String getCurrentDateTime() {
    Date d = new Date();

    String datetime = sdf.format(d);
    if (datetime.length() > 19) {
        datetime = correctDate(datetime);
    }
    return datetime;
}

2 个答案:

答案 0 :(得分:1)

我敢肯定,如果您不使用static的{​​{1}}实例,就不会有问题:

SimpleDateFormat

请参阅以下链接:
Why is Java's SimpleDateFormat not thread-safe?
"Java DateFormat is not threadsafe" what does this leads to?

答案 1 :(得分:0)

SimpleDateFormat不是线程安全的,这就是为什么您应该检查调用代码中是否没有问题。