时区
GTM 0时区; 中国则为东八区"Asia/Shanghai",东京 “Asia/Tokyo”;其他时区可根据GMT进行配置关联;
NSLog(@"GTM 时间:%@",[NSDate date]);
NSDate 一个时间的管理类;
NSDateFormatter采用iOS系统的时区作为默认值。操作系统的时区通过[[NSTimeZone localTimeZone] name]获取到。
NSCalendar
日历的一个相关对象,同样可以设置时区,可以计算NSDate年月日,相对时间配置关系计算和解析属性;
NSUInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay |NSCalendarUnitHour;
NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:dateN];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0800"]];
[dateFormatter setDateFormat:@"HH"];
踩坑
系统的12小时制和24小时制,应该在系统语言和地区设置上应该存在系统的一个bug,当我们在12小时制下切换其中一项,系统则会重置我们的设置还原为24小时制;这时候我们如上的配置则会取不到正确时间数值,"午後4時";且时间还原展示也会存在问题;(Test:日文,印度地区)
NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
网友评论