NSDate 字符串 Returns 无

NSDate String Returns nil

我正在使用调试器跟踪代码,但我不明白为什么它返回 nil 而不是日期。

将其传递给它:2016-02-12T19:47:29+0000

-(NSString*)formatDate:(NSString*)date {
    NSString *dateString = date;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'hh:mm:ssZ";

    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:dateString];

    return [dateFormatter stringFromDate:dateFromString];
}

您要经过的时间是 24 小时格式,您必须使用 HH 才能使 NSDateFormatter 能够读取它。创建 NSDate 后,您可以使用 hh.

设置 12 小时的新格式

这是代码。

-(NSString*)formatDate:(NSString*)date {

    NSString *dateString = date;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZ";

    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDate *dateFromString = [dateFormatter dateFromString:dateString];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'hh:mm:ssZ";

    return   [dateFormatter stringFromDate:dateFromString];
}

不确定您是否只是通过从字符串-> 日期-> 字符串测试转换,或者可能是为了在不同的时区生成等效的字符串。

以下内容会将描述日期的输入字符串转换为描述设备时区中相同日期的字符串。可以通过设置格式化程序的时区来实现不同的时区...

-(NSString*)formatDate:(NSString*)dateString {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZ";  // this is an RFC3339 date without milliseconds

    NSDate *date = [dateFormatter dateFromString:dateString];

    // to convert to a different timezone, try, for example:
    // dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"EST"];
    return  [dateFormatter stringFromDate:date];
}