我的sqlite在android中的日期是12/31/69而不是实际日期。我在我的数据库适配器中有这个:
+ 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))时,它输出12/31/69我做错了什么?
答案 0 :(得分:2)
mDateFormat
只是一种日期格式 - 您没有使用上一行中date
的值。你想要这样的东西:
Log.d("Debug", mDateFormat.format(date));
现在可能仍然会给出错误的价值 - 但我们可以继续这样做。如果您在适配器中显示的内容多于您在那里的部分语句,那将会非常有用。我们没有足够的背景。
编辑:你正在调用getLong
,但你有一个默认值CURRENT_TIMESTAMP,它看起来像 text :
如果列的默认值为CURRENT_TIME,CURRENT_DATE或CURRENT_TIMESTAMP,则新行中使用的值是当前UTC日期和/或时间的文本表示。对于CURRENT_TIME,值的格式为“HH:MM:SS”。对于CURRENT_DATE,“YYYY-MM-DD”。 CURRENT_TIMESTAMP的格式为“YYYY-MM-DD HH:MM:SS”。
我不清楚当你把这个值拿得很长时你会发生什么...根据文档,结果是特定于实现的 - 我怀疑它返回0,给你一个Unix纪元的日期,如果你在格林威治以西的时区,你的输出会有意义。
答案 1 :(得分:0)
疯狂猜测:
Date
构造函数从纪元开始需要多少毫秒,而不是秒。
尝试将第一行替换为:
Date date = new Date(cursor.getLong(cursor.getColumnIndex(mDbHelper.KEY_DATE)) * 1000);