2012-02-24 63 views
0

在我的sqlite数据库我有一个NSDate字段,并使用此代码创建一个具有唯一名称的图像文件,并基于该日期加载图像。Iphone NSDateFormatter - 无法加载图像文件

NSDateFormatter *digitsOnlyDateFormatter = [[NSDateFormatter alloc] init]; [digitsOnlyDateFormatter setDateFormat:@"yyyyMMddHHmmss"]; NSString *imageDateString = [digitsOnlyDateFormatter stringFromDate:[self imageDate]];

如果我改变从iPhone设置时区,我加入数据库的新记录,保存为另一个时区其他图像无法加载。

我认为转换存在问题。 有人可以帮我吗?

回答

0

部分NSDateFormatter s格式可以被用户设置覆盖:特别是AM/PM与24小时时间的选择。

您可以通过设置格式化程序的语言环境来解决此问题。 (注意:在这种情况下,您应该只做这样的事情来创建需要在区域设置中保持一致的字符串,并且不会向用户显示)。

NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[digitsOnlyFormatter setLocale:enUSPOSIXLocale]; 

P.S.如果你希望字符串进行相对于相同的时区,以及,你还应该设置格式化的时区:

[digitsOnlyFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
+0

但与已保存的图像文件会发生什么与任何时区的格式?该字符串无法与GMT匹配。我想要开发这个修复程序。 – dorin 2012-02-24 12:29:10

+0

如果您想要打开以某些随机语言环境和时区保存的旧保存图像文件,则需要设置相同的语言环境和时区以生成正确的字符串。 我的答案是,您应该每次都一致地设置时区和区域设置,以便'[digitsOnlyFormatter stringFromDate:someDate]'将始终为给定日期提供相同的输出。 – yuji 2012-02-24 12:57:12