根据用户设置将SQL日期转换为NSDate

根据用户设置将SQL日期转换为NSDate,sql,nsdate,nsdateformatter,Sql,Nsdate,Nsdateformatter,我需要将SQL日期(来自SQLite请求)转换为NSDate 我对此有一个分类: - (NSDate*)dateWithSQLString { if (sqlDateFormatter == nil) { [NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4]; sqlDateFormatter = [[NSDateFormatter alloc] init];

我需要将SQL日期(来自SQLite请求)转换为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];
}
如果用户设置为24小时,这项功能可以正常工作,但iPhone上的AM/PM设置不起作用

简单测试,用户设置为AM/PM(其他国际设置为法语):

[2906:907]SQL字符串:2012-01-01 00:00:00

[2906:907]SQL日期:(空)

同样的测试也适用于设置为24小时的iPhone


有没有解决此问题的方法?

请参见您是否尝试获取当前区域设置并在dateformatter对象上进行设置?如果添加当前区域设置,我会遇到完全相同的问题。它似乎可以与[NSLocale systemLocale]一起使用。这是好办法吗?@Rachel:谢谢你的链接,但这并没有解决我的问题。他们不会谈论改变用户设置和后果。
  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);