プロジェクトでコアデータを使用しています。データベースはsqliteで、データ型が「タイムスタンプ」の「生年月日」を格納する列があります。
今、いくつかのレコードを挿入したいのですが、「1809-06-17」のような人間が読める形式の日付を持っています。
この日付をタイムスタンプに変換して、データベースから取得したときにこの日付を取得する方法。
Python スクリプトを使用していくつかの変換を試みましたが、異なる結果が得られました。
これを行う簡単な方法はありますか?私を助けてください。
日付を 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 のホーム
問題を解決できることを願っています
最後に、必要なソリューションを取得しました。
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);