有两种方式解决这个问题
1、转化为当前自己想要的北京时间
//获取本地时区
NSTimeZone *tZone = [NSTimeZone localTimeZone];
// 获取日历
NSCalendar *calendar = [NSCalendar currentCalendar];
//获取系统当前时间
NSDate *currentDate = [NSDate date];
//设置日历的时区
[calendar setTimeZone:tZone];
//取出当前的时分秒
NSDateComponents *currentTime = [calendar components:NSCalendarUnitSecond|NSCalendarUnitMinute|NSCalendarUnitHour|NSCalendarUnitTimeZone fromDate:currentDate];
2、发现从日历中取出的时间日期不对,实际上iOS默认时间是🇺🇸时间(谁让苹果是人家美国公司呢)。当我们把日历取出的时间转化为String类型时,时间就默认为当前北京时间啦
[[Utility dateFormatter] stringFromDate:date];
+ (NSDateFormatter *)dateFormatter
{
static NSDateFormatter *dateFormatter;
if(!dateFormatter){
dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy-MM-dd";
}
return dateFormatter;
}