2012-01-04 87 views
3

我正尝试初始化一个UIDatePicker,该日期在我的会话中早些时候从那个日期选择器返回给我。这是库存计划的一部分,需要获取库存物品上次校准的日期。使用NSDateFormatter设置UIDatePicker日期

使用此代码我收到的日期/时间字符串:

NSDate *choice = [pickedDate date]; 
calDate = [[NSString alloc] initWithFormat:@"%@", choice]; 

我结束了在calDate以下字符串:2011-11-11 21时56分38秒+0000

我试图用下面的代码来设置我的日期选择器:

NSDate *date = [[[NSDate alloc] init] retain]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSLog(@"cal date = %[email protected]",drawingInfo.drawingDate); 
if([calDate length] != 0) { 
    date = [dateFormatter dateFromString:calDate]; 

    if(date != nil) { 
      [pickedDate setDate:date animated:NO]; 
    } 
} 

NSLog验证字符串是否仍然有效。 如果我在if(date!= nil)上放置了一个断点,它会向我显示date = nil。

在此先感谢。

+0

pueden ayudarme CON estan pregunta http://stackoverflow.com/questions/15162835/how-to-use-nsdateformatter-to-venezuela gracias – tony 2013-03-01 17:24:19

回答

7

您错过了日期格式中的Z格式说明符。

此代码:

NSString *calDate = @"2011-11-11 21:56:38 +0000"; 
NSDate *date = [[[NSDate alloc] init] retain]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 
//         right here ^

date = [dateFormatter dateFromString:calDate]; 

NSLog(@"date:%@", date); 

输出:

2012-01-03 20:14:15.258 Craplet[38753:707] date:2011-11-11 21:56:38 +0000 

没有Z:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

它输出:

2012-01-03 20:16:10.456 Craplet[38885:707] date:(null) 

如果格式不匹配的日期字符串,则返回nil