【发布时间】:2011-11-09 21:31:12
【问题描述】:
在 Xcode 4 之前,我曾经使用 NSDate initFromString,但现在它已被弃用,并在 Xcode 4.2 中产生错误。所以我跳过去使用NSDateFormatter dateFromString,但在我调用的方法中遇到了一个问题,该方法从字符串中获取日出日期,从字符串中获取日落日期以确定它是白天还是黑夜(同样的方法)。第一次调用工作正常,但第二次调用返回 nil。我决定看看它是否可重复,所以我创建了以下简单方法并将其转储到另一个项目中一个无害的地方:
- (void)testDateFormatter
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat: @"yyyy-MM-dd hh:mm:ss Z"];
NSString *srDateTimeString = @"2011-11-09 07:08:00 -0800";
NSString *ssDateTimeString = @"2011-11-09 17:08:00 -0800";
NSDate *sunriseDateTime = [formatter dateFromString: srDateTimeString];
NSDate *sunsetDateTime = [formatter dateFromString: ssDateTimeString];
return;
}
第一次调用返回正确的日期。第二次调用返回 nil。我尝试了几种变体(例如创建两个单独的 NSDateFormatter、预初始化日期、将日期预初始化为当前时间然后重新分配),但都没有达到预期的效果。
有人知道这里发生了什么吗?由于我在将它提交给 Apple 的任何地方都没有找到任何对此错误的引用(错误 #10420498)。
杰克
【问题讨论】:
-
我在编辑时看到你在 testDateFormatter 之后没有 (),这似乎是一个错字,所以我更正了它。让你知道。
-
@Anders,这不是错字,Objective-C 没有将其参数列表放在括号中。
-
澄清一下,您制作了两个单独的 NSDateFormatter 对象,分别发送了两个 dateFromString 和两个单独的字符串,但仍然发生这种情况?
-
是的,我试过了。我现在在测试方法上再试一次。是的,同样的结果。刚刚添加了另一个格式化程序并将它们重命名为 formatter1 和 formatter2 等。第一个工作正常,第二个是 nil。
标签: objective-c nsdateformatter xcode4.2