Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite保存日期:1969年12月31日?_Java_Android_Sqlite - Fatal编程技术网

Java SQLite保存日期:1969年12月31日?

Java SQLite保存日期:1969年12月31日?,java,android,sqlite,Java,Android,Sqlite,android中我的sqlite中的日期是69年12月31日,而不是实际日期。我的db适配器中有以下内容: + KEY_DATE + " DATETIME DEFAULT CURRENT_TIMESTAMP 在我的活动中,我有 Date date = new Date(cursor.getLong(cursor.getColumnIndex(mDbHelper.KEY_DATE))); mDateFormat = DateFormat.getDateIn

android中我的sqlite中的日期是69年12月31日,而不是实际日期。我的db适配器中有以下内容:

    + KEY_DATE + " DATETIME DEFAULT CURRENT_TIMESTAMP
在我的活动中,我有

        Date date = new Date(cursor.getLong(cursor.getColumnIndex(mDbHelper.KEY_DATE)));
        mDateFormat = DateFormat.getDateInstance(DateFormat.SHORT);

当我执行Log.d(“Debug”,mDateFormat.format(date))时,它会输出1969年12月31日我做错了什么?

mDateFormat
只是一种日期格式-您没有在任何地方使用前一行中的
date
值。你想要的是:

Log.d("Debug", mDateFormat.format(date));
现在,这可能仍然给出了错误的值-但我们可以继续。如果您能够显示适配器中的内容,而不是其中的部分语句,这将非常有帮助。我们几乎没有足够的上下文

编辑:您正在调用
getLong
,但您有一个默认值CURRENT_TIMESTAMP,它看起来将显示为文本:

如果列的默认值为当前时间、当前日期或当前时间戳,则新行中使用的值是当前UTC日期和/或时间的文本表示形式。对于当前_时间,值的格式为“HH:MM:SS”。对于当前日期,“YYYY-MM-DD”。当前时间戳的格式为“YYYY-MM-DD HH:MM:SS”

我不清楚当你把这个值作为一个长期的。。。根据文档,结果是特定于实现的-我怀疑它返回0,给您一个Unix时代的日期,如果您在格林威治以西的时区,这对您的输出是有意义的。

Wild guess:

  • 您所在的时区是GMT减去某个值(编辑:已确认)
  • 返回的长度是秒数,这意味着您必须乘以1000
  • Date
    构造函数从epoch开始需要毫秒数,而不是秒数

    尝试将第一行替换为:

    Date date = new Date(cursor.getLong(cursor.getColumnIndex(mDbHelper.KEY_DATE)) * 1000);
    

    看起来像是溢出错误。很抱歉,我忘了放mDateFormat.format(日期),它是12/31/69@user1104659:以及问题中代码第一部分的其他上下文?也可以看到我的编辑,我怀疑它解释了一些事情。我在GMT-5中如何修复它。我在帖子里犯了一个错误,因为我只是在打字,我应该抄的。日期日期=新日期(cursor.getLong(cursor.getColumnIndex(mDbHelper.KEY_Date));mDateFormat=DateFormat.getDateInstance(DateFormat.SHORT);Log.d(“Debug”,mDateFormat.format(date));正如我所说的——尝试将返回的long值乘以1000