使用NSDateFormatter设置UIDatePickerdate

我正在尝试初始化一个UIDatePicker,它的date从我的会话中早期的dateselect器中返回给我。 这是库存计划的一部分,需要获取库存物料上次校准的date。

使用此代码我收到一个date/时间string:

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

我在calDate中结束了以下string:2011-11-11 21:56:38 +0000

我想用下面的代码设置我的dateselect器:

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

NSLogvalidationstring是否仍然有效。 如果我把一个断点放在if(date!= nil)上,它会显示出date = nil。

提前致谢。

您错过了date格式中的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) 

如果格式不能与datestring匹配,则返回nil