NSDateFormetter 问题 iOS

Issue with NSDateFormetter iOS

刚刚发现 NSDateFormatter 停止识别 AM/PM 24 小时格式。我的代码是

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd HH:mma";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30PM"];
NSLog(@"%@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 13:30PM"];
NSLog(@"%@", date2);

我得到的输出显示相同的日期是:

2015-12-24 15:38:54.234 xyz[580:88238] 2015-02-11 07:00:00 +0000
2015-12-24 15:38:54.235 xyz[580:88238] 2015-02-11 07:00:00 +0000

但在我将 XCode 更新为 7.2 并将 iPod 更新为 9.2 之前,它已经开始工作了。如果这是 iOS 9.2 错误,请告诉我。

你可以这样试试

  NSDate *currDate = [NSDate date];

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

 [dateFormatter setDateFormat:@"dd  MM  YY HH:mma"];

  NSString *dateString = [dateFormatter stringFromDate:currDate];

  NSLog(@"%@",dateString);

13:30PM 没有意义。使用 24 小时制 AM/PM.

特别是 13:30 PM 在使用 24 小时制时不是有效时间。

解决方案: 从日期格式化程序中删除 PM 并删除 a

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd HH:mm";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30"];
NSLog(@"%@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 13:30"];
NSLog(@"%@", date2);

正确输出

2015-12-24 11:42:43.420 Flip[3080:312362] 2015-02-11 11:30:00 +0000
2015-12-24 11:42:43.422 Flip[3080:312362] 2015-02-11 12:30:00 +0000

(时差导致此处偏移一小时)

尝试对 12 小时制使用 hh:mma 或对 24 小时制使用 HH:mm

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd hh:mma";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30PM"];
NSLog(@"Date1: %@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 01:30PM"];
NSLog(@"Date2: %@", date2);

NSString *str1 = [dateFormatter stringFromDate:date1];
NSString *str2 = [dateFormatter stringFromDate:date2];
NSLog(@"DateStr1: %@", str1);
NSLog(@"DateSTr2: %@", str2);

输出:-

Date1: 2015-02-11 07:00:00 +0000
Date2: 2015-02-11 08:00:00 +0000
DateStr1: 2015 02 11 12:30PM
DateSTr2: 2015 02 11 01:30PM