0

(SQLite リクエストからの) SQL 日付を NSDate に変換する必要があります。

そのためのカテゴリがあります:

- (NSDate*)dateWithSQLString
{  
  if (sqlDateFormatter == nil) 
  {    
    [NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
    sqlDateFormatter = [[NSDateFormatter alloc] init];
    [sqlDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    [sqlDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
  }
  return [sqlDateFormatter dateFromString:self];
}

これは、ユーザー設定が 24H の場合はうまく機能しますが、iPhone の AM/PM 設定では機能しませんでした。

ユーザー設定を AM/PM に設定した簡単なテスト (その他の国際設定はフランス語):

  FMResultSet *dbRows = [self.database executeQuery:@"SELECT pulled_at FROM countries WHERE id = '1'"];
  [dbRows next];
  NSString *pulled_at = [dbRows stringForColumn:@"pulled_at"];
  NSLog(@"SQL String : %@", pulled_at);
  NSDate *sqlDate = [pulled_at dateWithSQLString];
  NSLog(@"SQL Date : %@", sqlDate);

[2906:907] SQL 文字列: 2012-01-01 00:00:00

[2906:907] SQL 日付: (null)

24Hに設定されたiPhoneでも同じテストがOKです。

この動作を修正するアイデアはありますか?

4

0 に答える 0