【问题标题】:Iphone NSDateFormatter - image files could not be loadedIphone NSDateFormatter - 无法加载图像文件
【发布时间】:2012-03-14 21:18:27
【问题描述】:

在我的 sqlite 数据库中,我有一个 NSDate 字段,我使用此代码创建了一个具有唯一名称的图像文件,并根据该日期加载图像。

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

如果我从 iphone 设置更改时区并在 db 中添加新记录,则无法加载使用其他时区保存的其他图像。

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

【问题讨论】:

    标签: ios time timezone nsdate nsdateformatter


    【解决方案1】:

    部分NSDateFormatters 格式可以被用户设置覆盖:特别是选择上午/下午与 24 小时制。

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

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

    附:如果您希望字符串也相对于同一时区,您还应该设置格式化程序的时区:

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

    【讨论】:

    • 但是对于已经保存的具有任何时区格式的图像文件会发生什么?该字符串无法与 GMT 匹配。我想开发此修复程序。
    • 如果您说您要打开使用一些随机区域设置和时区保存的旧图像文件,那么您需要设置相同的区域设置和时区才能生成正确的细绳。我的回答的重点是您应该每次都一致地设置时区和语言环境,以便[digitsOnlyFormatter stringFromDate:someDate] 在给定日期始终提供相同的输出。
    猜你喜欢
    • 2014-12-03
    • 2023-03-15
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2021-08-29
    • 2019-07-03
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多