2012-11-08 46 views
2

我正在項目中使用核心數據。數據庫是sqlite,並有用於存儲具有數據類型「時間戳」的「生日」的列。計算核心數據項目iOS中的時間戳

現在,我想在其中插入一些記錄,並將日期設置爲「1809-06-17」之類的人類可讀格式。

如何將此日期轉換爲時間戳,以便從數據庫中獲取此日期。

我使用python腳本嘗試了一些轉換,但得到了不同的結果。

有沒有簡單的方法來做到這一點?請幫幫我。

+0

要生成該格式的日期以供將來存儲,您需要查看'NSDateFormatter'。這將允許您創建任意日期格式,然後您可以使用它來隱藏任何日期。 我假設您正在尋找稍後獲取時間戳,然後將它們添加到上述格式的CoreData對象中。 – EricLeaf

回答

6

您可以將日期存儲爲TEXT並且不必擔心轉換爲時間戳和從時間戳轉換。

要時間戳轉換成NSDate的使用:

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

字符串的NSDate到時間戳:

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

SQLite的犯規有日期數據類型,它只是將其存儲在一個INT(UNIX時間) ,REAL(儒略日數字)或TEXT(ISO8601字符串),具體取決於您選擇的內容。

因此,您可以使用上述方法將日期格式存儲爲TEXT列的已有格式(「1809-06-17」)或存儲爲INT列中的時間戳以進行雙向轉換。

SQLite的日期和時間功能:SQLite date and time SQLite的DATATYPES:SQLite datatypes doc SQLite的網站官方公報和文件:SQLite Home

希望你能解決你的問題

+0

感謝您的回覆。但我需要將「1809-06-17」轉換爲時間戳並將其存儲到數據庫中。我已經嘗試了一種解決方案,可以在1950年左右給出正確的值。解決方案:從datetime導入時間 導入日期時間 ref = time.mktime(datetime(2001,1,1,0,0,0).timetuple()) now = time.time() - ref –

1

最後我得到了我所需要的解決方案。

  
NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
[df setDateFormat:@"yyyy-MM-dd"];  
NSDate * past = [df dateFromString:@"1971-04-06"]; 
NSTimeInterval oldTime = [past timeIntervalSinceDate:[df dateFromString:@"2001-01-01"]]; 
NSString * unixTime = [[NSString alloc] initWithFormat:@"%0.0f", oldTime]; 
NSLog(@"unixTime = %@",unixTime);