Java SQLite保存日期:1969年12月31日?
android中我的sqlite中的日期是69年12月31日,而不是实际日期。我的db适配器中有以下内容: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
+ 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:
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