ios - 将包含 AM/PM 的 NSString 转换为 NSDate

标签 ios objective-c

也许这是一个老问题,我在这个网站上搜索并发现了一些类似的问题,但我仍然无法解决我的问题。我有一个名为 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/

相关文章:

iphone - 带参数的 HTTP POST 请求

objective-c - 检查后立即设置一个 BOOL

iphone - 放大/缩小时 MKAnnotationView 错误更改了图钉图像

ios - 编译器未运行 TableView 数据源方法

ios - 过滤韩语单词/字符?

ios - iOS 下载文件时的进度条

ios - UIPageViewController 手势覆盖我的 UITableView

ios - UICollectionView 单元格未在 reloadData 上清除

ios - Objective-C 在多维数组中的指定索引处插入值

ios - iOS 中的 itunes JSON 请求返回一个 XML 对象