从 24h NSString return null 创建 NSDate

Create NSDate from 24h NSString return null

我有 NSString 这样的 24 小时格式:

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

如何用 NSString b 得到 NSDate

我使用:
+ setDateFormat: @"HH:mm" ==> 当 phone 设置为 24 小时时,它对 a 和 b 都有效。
+ setDateFormat: @"hh:mm" ==> 它仅适用于 phone 设置为 am/pm.

的情况

我的完整代码 self.timeInit 是 24 小时格式的 NSString:

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];
    }

您在 NSDateFormatter 上强制使用自己的语言环境,因此它会忽略用户的设置。

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