gpt4 book ai didi

iphone - NSDateFormatter 在两个不同设备上的行为不一致

转载 作者:太空狗 更新时间:2023-10-30 03:21:48 24 4
gpt4 key购买 nike

我遇到了一些问题,NSDateFormatter 在一个用户的设备上失败(解析字符串时返回 nil),但当我在本地(无论是在模拟器中还是在我的设备上)运行它时运行良好。

我试图排除可能导致此行为不同的原因。我的第一个想法是语言环境,但我已经尝试明确设置它以确保始终使用相同的语言环境,但它没有区别。

代码如下:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
[locale release];

NSDate *theDate = [dateFormatter dateFromString:dateString];
NSLog(@"PARSING DATE %@ AS %@", dateString, theDate);

在故障设备上,我得到:

PARSING DATE 2010-11-28T20:30:49-0000 AS (null)

但在本地我得到:

PARSING DATE 2010-11-28T20:30:49-0000 AS 2010-11-28 20:30:49 +0000

这让我抓狂,我是不是还漏掉了什么?

我在本地(模拟器)和我的设备(iPhone 4)上运行 4.2。故障设备是运行 4.2.1 的 3GS。

任何想法将不胜感激!

最佳答案

我很高兴地说,我最终弄清了这个问题的真相,我必须感谢 @bendodson在 Twitter 上帮助我解决这个问题。 aBitObvious 在他上面的评论中也提到了这个问题;如果可以的话,我会投他一票。

用户的设备和我的设备有一个区别,那就是他的设备设置为使用 12 小时制,而我的没有。这一点意味着 NSDateFormatter 无法解析上述示例中的时间并返回 nil。

到目前为止,这个问题对我来说最大的问题是无法在本地重现该问题!

所以,要明确,要解决这个问题;也就是说,如果您正在解析已知的固定格式的日期/时间字符串(通常来自某些 API,就像我的情况一样),您应该为日期格式化程序设置正确的语言环境,通常是 en_US_POSIX。

...
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:locale];
[locale release];

有关这方面的更多信息,请阅读 Apple QA1480 .

关于iphone - NSDateFormatter 在两个不同设备上的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4418470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com