将字符串转换为日期时,日期有所不同

时间:2017-08-22 08:35:24

标签: ios nsdate nsdateformatter

我正在使用以下代码从字符串中获取日期。所有代码似乎都很好,但是当我打印输出日期时,日期有12:30的差异。

可能是什么问题?我错过了什么吗?

NSString *strDate = @"8/22/2017 7:00:00 AM";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM/dd/yyyy HH:mm:ss a"];
NSDate *date = [df dateFromString:strDate];
NSLog(@"%@", [date description]);

输出:

  

2017-08-21 18:30:00 +0000

2 个答案:

答案 0 :(得分:3)

小时说明符错误,12小时格式为hh

[df setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];

注意:

请注意NSLog始终以UTC格式打印日期,尽管日期格式化程序会考虑本地时区。

答案 1 :(得分:1)

试试这个:

您只需将时间设为GMT

 [df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];