我有这段代码可以将字符串转换为日期:
NSString* strToConvert;
NSDate* dtToReturn;
//...code to parse string
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yy, HH:mm:ss a"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
dtToReturn = [dateFormatter dateFromString:strToConvert];
我将这个字符串“08/30/16 02:22:00 PM”发送给它
它返回这个日期:2016-08-30 16:22:00 +0000
这是预期的,因为我是 GMT +4
但是如果我发送这个字符串:“08/30/16 03:22:00 PM”
它返回相同的日期:2016-08-30 16:22:00 +0000
我一次只将一个字符串传递给该方法。我的日期格式化程序有问题吗?
最佳答案
因为 strToConvert
使用 AM/PM 小时时间,而日期格式化程序使用 24 小时时间,这会导致错误的日期转换。修复日期格式化程序的 dateFormat
以使用 AM/PM 小时时间:@"MM/dd/yy, hh:mm:ss a"
关于iOS 将字符串转换为日期 : hour is the same on two different times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298817/