SQLITE奇怪的时间戳和IOS

时间:2013-04-09 12:30:10

标签: ios sqlite unix nsdate

我正在尝试在IOS中使用来自Sqlite的数据显示一个简单的tableview。我的数据库日期存储为时间戳。我认为是一个unix时间戳,但如果我尝试使用dateWithTimeIntervalSince1970我真的很奇怪的结果。

存储日期行的示例:

1352208510267
1352208512266
1352208514266
1352208516266
1352208530266
1352208532265

3 个答案:

答案 0 :(得分:1)

使用像这样的查询

SELECT datetime(timestamp, 'unixepoch') from YOURTABLENAME
WHERE id = someId;

这应该将其转换为某个可读值。

看看here

答案 1 :(得分:1)

我找到了答案here。我将结果与之前的答案进行了比较:

SELECT strftime('%Y-%m-%d %H:%M:%S', datetime(ZDATE+978307200, 'unixepoch', 'localtime')), datetime(ZDATE, 'unixepoch', 'localtime') FROM ZTABLE

调整Apple的纪元(2001年1月1日)的查询给了我正确的日期:

"2015-09-29 20:50:51", "1984-09-28 20:50:51"
"2015-09-29 21:03:10", "1984-09-28 21:03:10"
"2015-09-29 21:25:30", "1984-09-28 21:25:30"

答案 2 :(得分:0)

自1970年1月1日起,Unix时间戳被定义为的数量。 刚才,这将是大约1365525702。

你的价值要大一千倍,即以毫秒衡量。

确定您是否确实需要毫秒精度,然后在适当的位置添加* 1000/ 1000