2

文字列を日付に変換するときに null 値を取得する理由を誰かが説明してくれるかもしれません。それはすべて正しいように見えますが、明らかに何かが欠けています。

背景:

この iPad アプリはさまざまな国で使用されるため、日付を計算して、ユーザーが最後にログインしてから 90 日が経過したかどうかを確認する必要があります。

DateLastIn フィールドが TEXT に設定された SQLite データベースがあります。

私のオブジェクトには、NSDate として設定された DateLastIn プロパティがあります

私のレコードオブジェクトを設定するとき、私はそのように NSDateFormatter を設定しました..

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];  // SQLite default date format

次に、DateLastIn を読み込みます (SQLite の FMDB ラッパーを使用)。

        // test SQLite as String
        NSString *testDate = [results stringForColumn:@"DateLastIn"];
        NSLog(@"DateLastIn straight from DB (string) shows %@", testDate);

結果: DB (文字列) からの直接の DateLastIn は 2012-04-23 18:20:51 を示します

これまでのところ、すべて順調です。次に、これを NSDate オブジェクトに変換するテストを行います。

        NSDate *aDate = [[NSDate alloc] init];
        aDate = [formatter dateFromString:testDate];
        NSLog(@"Using formmater on string date results in: %@", aDate);

結果: 文字列日付でフォーマッターを使用すると、次のようになります: (null)

私はSQLiteでDATETIMEを試しました.NSDateの代わりにオブジェクトでNSStringを使用しようとしましたが、円を描いているようです.

どんな助けでも大歓迎です。

4

2 に答える 2

4

NSDateFormatterUnicode技術標準#35のフォーマットパターンを使用します。

時間形式の場合、(時間[1-12])ではな​​くHH(時間[0-23])が必要です。hh

于 2012-05-31T08:37:51.200 に答える
2

日付形式を hh ではなく HH に変更しましたが、動作します。これが私のテストコードです....

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];  // SQLite default date format


// test SQLite as String
NSString *testDate = @"2012-04-23 18:20:51";



NSDate *aDate = [formatter dateFromString:testDate];

NSLog(@"Using formmater on string date results in: %@", aDate);
于 2012-05-31T08:41:30.617 に答える