我正在尝试初始化一个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 = %.@.",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 :(得分: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