【问题标题】:date formatter different output on different devices running same iOS version日期格式化程序在运行相同 iOS 版本的不同设备上的不同输出
【发布时间】:2011-12-14 16:54:52
【问题描述】:
NSDate *currentDate =  [NSDate date];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MM/dd/yyyy,h,mm,a"];
NSString *dateString = [format stringFromDate:currentDate];
[format release];

NSLog(dateString);

输出:设备 iPhone4
[240:707] 10/25/2011,22,23,
当前语言:自动;目前客观-c 警告:无法读取 /SDK4.2/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J2)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib 的符号

输出:设备 iPad2
[82:707] 10/25/2011,12,28,PM
当前语言:自动;目前客观-c 警告:无法读取 /SDK4.2/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J2)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib 的符号
这个东西在模拟器上运行良好。

如何处理?

更多信息:
还要注意的是,相同的格式字符串会返回 12 小时和 24 小时时钟值

【问题讨论】:

  • 两个设备的时间可能不同。设置相同的时间和时区。。然后检查。。

标签: iphone ipad ios4


【解决方案1】:

听起来您在 iPad 和 iPhone 上设置了不同的区域设置,请参见此处:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1

要么在两台设备上设置相同的区域设置(如果这只是你的问题),要么确保 NSDateFormatter 使用相同的(硬编码)区域设置,如果你依赖的格式类似于某种格式。

编辑:附加信息

这显然是语言环境的问题,这里更详细(带有解决方案): http://developer.apple.com/library/ios/#qa/qa1480/_index.html

但我错了,设置语言环境确实无济于事。

引用:

On iPhone OS, the user can override the default AM/PM versus 24-hour time setting (via Settings > General > Date & Time > 24-Hour Time), which causes NSDateFormatter to rewrite the format string you set, which can cause your time parsing to fail.

【讨论】:

  • 设置区域设置不会影响 24/12 小时制。这是我可能在这里看到的问题..!!
  • 与上面 samfisher 的评论相反,我的测试表明,语言环境确实会影响日期格式化程序是否决定用 12 小时制代替 24 小时制,而与明确的日期格式无关(尽管它似乎只有在您覆盖某些语言环境中的默认 12/24 时钟设置时才会发生)。根据 QA1480 显式设置 en_US_POSIX 的语言环境可以解决问题。
【解决方案2】:

终于解决了。 这是由于手机设置为24小时制。

我必须相应地更新我的代码。

:)

【讨论】:

  • @Devang 尽管有评论和稍微令人困惑的答案,TheEye 指出了正确的答案——在某些语言环境中,日期格式化程序可能会选择性地调整指定日期格式的部分内容。那是因为日期格式化程序实际上是针对两种不同的事情,即为人们打印日期和进行 unicode 日期格式化,并且认为前者比后者更重要。在格式化程序上设置 en_US_POSIX 的语言环境可以解决冲突,始终为您提供您所要求的格式。
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多