生成NSDateFormatter(null)SQLite和iOS 5.1

也许有人可以帮忙解释为什么我将string转换为date时得到一个空值。 这一切看起来不错,但我显然在这里失去了一些东西。

一些背景:

这个iPad的应用程序将在不同的国家使用,我将需要做一个计算date,看看自用户上次login后90天过去了。

我有一个DateLastIn字段设置为TEXT的SQLite数据库

我的对象有一个DateLastIn属性设置为NSDate

当填充我的logging对象时,我设置了一个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); 

结果: DateLastIn直接从DB(string)显示2012-04-23 18:20:51

一切都很好。 接下来我testing转换这个NSDate对象,例如

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

结果: 在stringdate上使用formmater的结果是:(null)

我已经在SQLite中尝试过DATETIME,我试过在我的对象中使用NSString而不是NSDate,似乎是在圈子里四处走动。

任何帮助非常感谢。

NSDateFormatter使用Unicode技术标准#35中的格式模式 。

对于小时格式,您需要HH (小时[0-23])而不是hh (小时[1-12])。

我把你的date格式改为HH,而不是…… 这是我的testing代码….

 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);