也许这是一个老问题,我在这个网站上搜索并发现了一些类似的问题,但我仍然无法解决我的问题。我有一个名为 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
如您所见,日期是正确的,但时间是错误的。
请帮我修复它。
最佳答案
您的日期格式化程序存在一个问题,首先您使用的是 24 小时格式,HH
用于日期格式中的小时。但是您的示例使用 12 小时制,应该使用 hh
。
[formatter setDateFormat:@"MM/dd/yyyy-hh:mm a"];
根据您的时区偏移,日期会被正确解析,因为 NSLog
打印的日期是以 GMT 表示的。
当您使用 NSDateFormatter
从日期对象创建字符串时,您的时区用于计算正确的时间偏移量。
关于ios - 将包含 AM/PM 的 NSString 转换为 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19903905/