iOS15.4及以上系统
当手机设置为12小时制时会在转换后的日期字符串中间出现“上午”,“下午”,“AM”,“PM”字样
发生这种情况时系统中NSDateFormatter 会重写你设置的格式字符串,故而产生意想不到的结果
例如“20220714上午082013”
如果你把日期转成字符串是希望展示给用户看的,那么使用用户设置的时间格式和日历是合理的,但是如果你是希望把日期返回给后端处理或者归档,那么就应该使用固定格式的日期字符串
解决办法如下
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 本地化YYModel的方式(这是一种专门设计用于生成美国英语结果的语言环境)
dateFormatter.locale = [NSLocale systemLocale];
//NSCalendarIdentifierISO8601是基于年、季度、周、日计算的日历,会出现YYYY的问题,所以用NSCalendarIdentifierGregorian比较好
dateFormatter.calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
return dateFormatter;