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

时间:2017-01-11 09:39:50

标签: ios objective-c nsdate nsdateformatter nstimezone

我的输入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,结果也是相同的。

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

2 个答案:

答案 0 :(得分:1)

HH是24小时格式的四小时,但由于你有“am”/“pm”,它显然是12h格式。 使用HH中的hh更改dateFormat

请记住适用于iOS7 +格式的可用文档here here

答案 1 :(得分:0)

使用此日期格式:

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