0

也许这是一个老问题,我在这个网站上搜索过,发现了一些类似的问题,但我仍然无法解决我的问题。我有一个名为 gameDateTimeStr: "11/12/2013-10:00 PM" 的 NSString,我想将其转换为 NSDate。我使用了以下代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy-HH:mm a"];
[formatter setLocale:[NSLocale currentLocale]];
NSDate *gameDateTime = [formatter dateFromString:gameDateTimeStr];

但是,打印在 consolte 上时,它的描述是:2013-11-12 05:00:00 +0000
可以看到,日期是正确的,但时间是错误的。请帮我修复它。

4

1 回答 1

5

您的日期格式化程序存在一个问题,首先您使用 24 小时格式,HH用于日期格式的小时数。但是您的示例使用 12 小时格式,hh应该使用。

[formatter setDateFormat:@"MM/dd/yyyy-hh:mm a"];

根据您的时区偏移,正确解析日期,因为日期 printbyNSLog以 GMT 表示。

当您从日期对象创建字符串时,使用NSDateFormatter您的时区来计算正确的时间偏移量。

于 2013-11-11T10:28:16.283 回答