NSDate dateFromString被弃用了吗?

4

我想使用NSDate dateFromString方法,但是我收到了一个警告并且应用程序崩溃了。 代码如下:

NSString *pickerDate = [NSString stringWithFormat:@"%@", timeSelector.date];
NSDate *defaultDate = [NSDate dateFromString:pickerDate];

警告信息如下:
'NSDate' may not respond to '+dateFromString'.

看起来这个方法已经被弃用了(正在从XCode 2升级到3的过程中)。

我可以使用哪种替代方法来从字符串创建日期?


我假设 timeSelector 是一个 UIDatePicker,你将 date 属性转换为字符串再转回日期的原因是什么? - dreamlax
可能会更有效率,只是不知道代码应该怎么写 :/ 你介意给我一个例子吗? - Ian McIntyre Silber
我的意思是,您能否仅执行 NSDate *defaultDate = timeSelector.date; - dreamlax
3个回答

15

NSDateFormatter 是您从 NSString 获取 NSDate 的预期方式。

最基本的用法如下:

NSString *dateString = @"3-Aug-10";

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"d-MMM-yy";

NSDate *date = [dateFormatter dateFromString:dateString];

2

我曾经遇到过同样的问题。将dateFormat从@"YYYY/M/d H:m:s"更改为@"YYYY/MM/dd HH:mm:ss",如下所示。

然后它可以在我的iPhone 4上工作。(Xcode 4.5 for iOS 6.)

NSDateFormatter *dateFormatter1;
NSString *dateStr1=@"";
NSDate *gantanDate1;

dateFormatter1 = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter1 setLocale:[NSLocale systemLocale]]; 
[dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]]; 
dateFormatter1.dateFormat=@"YYYY/MM/dd HH:mm:ss";
dateStr1=@"2012/1/1 00:00:00"];
//  in his case,   dateStr1=pickerDate;  
gantanDate1 = [dateFormatter1 dateFromString:dateStr1];

0

嗨Silber,每个人都说将字符串日期转换为日期对象。尝试一下,我认为您在两个地方使用了两个日期格式化程序,一个是将日期保存为字符串,另一个是从字符串获取日期。请尝试在两个地方使用相同的日期格式化程序。这将解决您的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接