背景知识
1.UTC,即世界标准时间或世界协调时间,它不从属于任何一个时区;
2.NSDate,时间是以UTC时间为标准的,所以当世界任何一个角落同一时间任何一个人调用[NSDate date]的时候,返回的date是相同的;
3.NSDateFormatter,即时间格式化工具类,当他将NSDate转换为NSString的过程中会考虑当前地区的时区,将NSDate+时区时差转换为NSString
在开发过程中需要注意的地方:
1. 需要使用当前时区的NSDate实例的时候
例如:获取NSDate给NSDatePicker赋值的时候
采用以下方式获取:
NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *newDate = [date dateByAddingTimeInterval: interval];
2.需要使用当前时区的时间字符串实例的时候
采用常规方式获取:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate *datenow = [NSDate date];
NSString *currentTimeString = [formatter stringFromDate:datenow];
注意:在获取NSDate实例过程中不要加上当前时区时差,原因参考背景知识。