gpt4 book ai didi

ios - NSDateFormatter.dateFromString 在 iOS9 升级后返回 null

转载 作者:可可西里 更新时间:2023-11-01 03:08:46 25 4
gpt4 key购买 nike

我的一个应用程序在刚升级到 iOS9 的设备上运行后出现问题(应用程序的目标是 8.1)。

该应用程序在 iOS9 之前的版本上运行良好,但是,仅在设备上升级到 iOS9 后,就会出现以下问题。

下面名为“anObsDate”的变量现在返回空值。我不知道为什么。看来主机设备上的 iOS9 独立升级已触发此问题发生。

NSDate *anObsDate = [[self bomDateFormatter] dateFromString:[anObs timeStamp]];

当我使用以下调试运行应用程序时,我们得到以下输出:

     NSLog(@"Timestamp %@", [anObs timeStamp]);
NSLog(@"Formatter %@", [self bomDateFormatter]);
NSDate *anObsDate = [[self bomDateFormatter] dateFromString:[anObs timeStamp]];

Timestamp 2015-09-17 00:01:10
Formatter <NSDateFormatter: 0x7fe7abc653c0>

我按如下方式设置我的日期格式化程序:

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_AU"];
NSDateFormatter *countDownFormatter = [[NSDateFormatter alloc] init];
[countDownFormatter setLocale:locale];
[countDownFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]];
[countDownFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss"];
return countDownFormatter;

再次说明这一点,如果我在 iOS9 之前的设备上运行我的应用程序,一切正常,并且 dateFromString 返回一个 NSDate。升级到 iOS9 后,dateFromString 返回 null。

有什么建议吗?

谢谢。

最佳答案

似乎 NSDateFormatter 在 iOS 9 中的行为发生了变化,因此日期格式中的单引号字符必须与字符串中的字符完全匹配。以前它会接受任何字符(搜索文档,但找不到任何提及此更改的内容)。

时间戳字符串缺少日期格式中定义的“T”。尝试将您的日期格式更改为:

// Note the "T" has been removed
[countDownFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss"];

您的另一个选择是将“T”添加到时间戳字符串中:

// Note the "T" has been added
2015-09-17T00:01:10

这应该与以前版本的 iOS 向后兼容。

关于ios - NSDateFormatter.dateFromString 在 iOS9 升级后返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32665414/

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