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 には日付のデータ型がありません。選択した内容に応じて、INT (Unix Time)、REAL (ユリウス日番号)、または TEXT (ISO8601 文字列) に格納されるだけです。

したがって、日付を既に持っている形式 (「1809-06-17」) で TEXT 列として保存するか、上記の方法を使用して INT 列にタイムスタンプとして保存し、両方の方法で変換することができます。

SQLite の日付と時刻の関数: SQLite の日付と時刻 SQLite のデータ型: SQLite のデータ型のドキュメント SQLite の公式サイトとドキュメント: SQLite のホーム

問題を解決できることを願っています

于 2012-11-08T02:33:33.253 に答える
1

最後に、必要なソリューションを取得しました。

    
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];    
NSDate * past = [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 に答える