2

我在我的项目中使用核心数据。数据库是 sqlite 并且有用于存储具有数据类型“时间戳”的“生日”的列。

现在,我想在其中插入一些记录,并且我有人类可读格式的日期,例如“1809-06-17”。

如何将此日期转换为时间戳,以便从数据库中获取此日期。

我尝试使用 python 脚本进行一些转换,但得到了不同的结果。

有什么简单的方法可以做到这一点?请帮我。

4

2 回答 2

6

您可以将日期存储为 TEXT,而不必担心与时间戳之间的转换。

要将时间戳转换为 NSDate,请使用:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSLog(@"%@", date);

字符串到 NSDate 到时间戳:

NSDate *date = [NSDate dateWithString:stringWithDate];
NSTimeInterval timeStamp = [date timeIntervalSince1970];

SQLite 没有 Date 的数据类型,它只是根据您的选择将其存储在 INT(Unix 时间)、REAL(儒略日数)或 TEXT(ISO8601 字符串)中。

因此,您可以将日期以已有的格式(“1809-06-17”)存储为 TEXT 列,或者使用上述方法将日期作为时间戳存储在 INT 列中以进行双向转换。

SQLite 日期和时间函数:SQLite 日期和时间 SQLite DATATYPES:SQLite 数据类型 doc SQLite 官方网站和文档:SQLite Home

希望你能解决你的问题

于 2012-11-08T02:33:33.253 回答
1

最后我得到了我需要的解决方案。

    
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];    
NSDate * 过去 = [df dateFromString:@"1971-04-06"];
NSTimeInterval oldTime = [过去 timeIntervalSinceDate:[df dateFromString:@"2001-01-01"]];
NSString * unixTime = [[NSString alloc] initWithFormat:@"%0.0f", oldTime];
NSLog(@"unixTime = %@",unixTime);
于 2012-11-08T10:20:40.213 回答