[英]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.