gpt4 book ai didi

ios - 为什么 NSFormatter dateFromString 偶尔会返回 nil?

转载 作者:行者123 更新时间:2023-11-28 21:47:13 25 4
gpt4 key购买 nike

我有一种方法可以将特定格式的字符串转换为 NSDate,但它偶尔会返回 nil。

- (NSDate *)dateFromString:(NSString *)dateAndTime
{
NSDate *date;

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];

date = [formatter dateFromString:dateAndTime];

return date;
}

据我所知,这在大多数情况下都有效,但也有一定比例的时间会失败。

我已经跟踪这个错误一段时间了,所以有一些代码会在发生这种情况时使应用程序崩溃。崩溃报告告诉我使该方法返回 nil 的值。

例如,我收到一份崩溃报告,告诉我“4/14/2015 7:35 PM”返回了 nil。

当我为每个日期硬编码相同的值时,它在我的计算机上以 Debug模式运行应用程序时有效。

这里可能发生了什么?我没有涵盖 NSDate 的某些案例吗?为什么它不会在所有设备上发生?

最佳答案

首先,4/14/2015 7:35 PM 的日期字符串可能是 M/d/yyyy h:m aM/dd/yyyy h:mm ahttp://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

其次,建议将NSLocale设置为NSDateFormatter。

formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

当我与一个中国人一起工作时,我遇到了同样的问题,即 NSDate 被设置为 nil。它只发生在特定的设备上,问题出在区域设置上。

要重现该问题,请按照以下步骤操作:

  1. 转到“设置”应用
  2. 常规 -> 语言和地区 -> 高级
  3. 关闭自动
  4. 将语言更改为简体中文
  5. 再次执行您的应用程序。如果未设置 NSLocale,您会发现 NSDate 始终为 nil。

关于ios - 为什么 NSFormatter dateFromString 偶尔会返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639126/

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