使用NSDateFormatter设置UIDatePicker日期

时间:2012-01-04 00:43:52

标签: ios xcode ipad

我正在尝试初始化一个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。

提前致谢。

1 个答案:

答案 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