繁体   English   中英

SimpleDateFormat 返回所有零日期

[英]SimpleDateFormat return all zero date

我正在使用 SimpleDateFormat 转换从电话通话记录中读取的日期/时间,但我得到的日期/时间全为零,例如:'0000-00-00 00:00:00'(年-月-日时:分:秒)

我将日期/时间转换为 2 种格式:

class callReader (val context: Context)
{
    private val sdfStr = SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.ENGLISH)
    private val sdfNum = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
    ....

    fun readCallLogs()
    {
        if (cursor != null) 
        {
            if (cursor.moveToFirst()) 
            {                    
                do 
                {
                    val phon = cursor.getString(number!!)
                    val mill = callDate?.let { cursor.getLong(it) }
                    val date = sdfStr.format(mill)
                    val ndat = sdfNum.format(mill)
                    ....
                    // constructed a data string and 
                    // save data to MySQL table with Volley
                }while (cursor.moveToNext())
            }
        }          
    }
}

我以 2 种格式保存日期,sdfStr 是 'dd-MM-yyyy HH:mm:ss' 供我的用户阅读,sdfNum 是将数据保存为 MySQL 表中的 DateTime 数据类型,以便我可以正确排序日期,因此它被转换为“yyyy-MM-dd HH:mm:ss”,MySQL 接受它作为 DateTime 格式。

问题是,从 sdfNum 返回的所有日期都为零,而 sdfStr 以字符串格式返回正确的日期:

在此处输入图像描述

我无法验证手机上的原始日期/时间,因为它不是我的手机,而是属于使用我的应用程序的人。 但是,对数据所做的唯一更改是通过 SimpleDateFormat object。 我的 PHP 页面仅将数据“按原样”存储到数据表中。

我的问题是:为什么 SimpleDateFormat 会返回一个完全由零组成的结果?

我有其他用户数据,其中 clog_dnum 包含正确的日期/时间数据。 此问题仅来自一位用户。

进一步考虑,也许 sdf 返回了一个无效的日期,因此 MySQL 服务器无法处理它,因此它所能做的就是将数据存储为全零。 无论哪种方式,问题肯定来自 SimpleDateFormat - 因为'sdfStr'和'sdfNum'都从'mill'获取日期值(以毫秒为单位的日期)

这是具有正确 clog_dnum 日期的其他数据行。 请注意 clog_idat(插入日期,我保存数据的日期/时间)的月份错误为零,这也是我经常遇到的问题,因此我怀疑 SDF 被窃听。 有人可以证实吗?

在此处输入图像描述

非常感谢。

问候,达伦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM