使用 am/pm 和时区将 NSString 转换为 NSDate

Convert NSString to NSDate with am/pm and timezone

我的输入 NSString2017-01-11 5:33:55 am +0000。我的代码是:

    date = @"2017-01-11 5:33:55 am +0000";
    uploadFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss a Z";
    [uploadFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
    NSDate *theDate = [uploadFormatter dateFromString:date];

但返回的 NSDate 始终是 2017-01-11 0:33:55 UTC,与输入的小时无关。也就是说如果输入2017-01-11 3:33:55 am +0000,结果也是一样的

有没有人遇到过这个问题?任何想法将不胜感激。

HH 是 24 小时格式的四小时,但由于您有 "am"/"pm",它显然是 12 小时格式。 在 dateFormat.

中将 HH 更改为 hh

请记住格式可用的文档 here,对于 iOS7+ 是 here.

使用这个日期格式:

[uploadFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a Z"];