时间日期和日历

时区
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];

stackoverflow

你可能感兴趣的:(时间日期和日历)