从24h NSString创建NSDate返回null

时间:2015-03-20 07:17:57

标签: ios objective-c nsdate nsdateformatter

我有24小时格式的NSString

NSString *a = @"10:00";
NSString *b = @"23:59";

如何使用NSDate b获得NSString

我使用:
 + setDateFormat: @"HH:mm" ==>当手机设置为24小时时,它对a和b都有效。
 + setDateFormat: @"hh:mm" ==>它只用于手机设置是上午/下午。

我的完整代码,self.timeInit是NSString,格式为24h:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"HH:mm"];
    NSDate *date = [dateFormat dateFromString:self.timeInit];

    if (!date){
        [dateFormat setDateFormat:@"hh:mm"];
        date = [dateFormat dateFromString:self.timeInit];
        NSLog(@"Date 2: %@", date);
    }

    if (!date){
        [dateFormat setDateFormat:@"H:mm"];

        date = [dateFormat dateFromString:self.timeInit];
        NSLog(@"Date 3: %@", date);
    }

    NSLog(@"Date: %@", date);
    if (date){
        [self.timePickerUI setDate:date];
    }

1 个答案:

答案 0 :(得分:2)

您在NSDateFormatter上强制使用自己的区域设置,因此它会忽略用户的设置。

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"HH:mm"];
[dateFormat setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
NSDate *date = [dateFormat dateFromString:self.timeInit];