系统语言环境
@property (class, readonly, copy) NSCalendar *currentCalendar;
@property (class, readonly, strong) NSCalendar *autoupdatingCurrentCalendar
#pragma mark 获取系统语言环境
- (void)testSystemLocaleInformation {
NSCalendar *calendar = [NSCalendar currentCalendar];
calendar = [NSCalendar autoupdatingCurrentCalendar];
}
初始化
+ (nullable NSCalendar *)calendarWithIdentifier:(NSCalendarIdentifier)calendarIdentifierConstant
- (instancetype)init
- (nullable id)initWithCalendarIdentifier:(NSCalendarIdentifier)ident
- (void)testCreatingAndInitializing {
NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese];
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
}
获取重要信息
@property (readonly, copy) NSCalendarIdentifier calendarIdentifier;
@property (nullable, copy) NSLocale *locale;
@property (copy) NSTimeZone *timeZone;
@property NSUInteger firstWeekday;
@property NSUInteger minimumDaysInFirstWeek;
- (NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date;
- (BOOL)rangeOfWeekendStartDate:(out NSDate * _Nullable * _Nullable)datep interval:(out nullable NSTimeInterval *)tip containingDate:(NSDate *)date;
#pragma mark 获取重要信息
- (void)testGettingInformation {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [NSDate date];
NSLog(@"calendarIdentifier:%@", calendar.calendarIdentifier);
NSLog(@"firstWeekday:%d", calendar.firstWeekday);
NSLog(@"minimumDaysInFirstWeek:%d", calendar.minimumDaysInFirstWeek);
NSLog(@"locale:%@", calendar.locale);
NSRange range = [calendar maximumRangeOfUnit:NSCalendarUnitYear];
range = [calendar minimumRangeOfUnit:NSCalendarUnitYear];
NSUInteger day = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:date];
NSLog(@"ordinalityOfUnit:%d", day);
range = [calendar rangeOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:date];
NSTimeInterval count = 0;
NSDate *dateOut = nil;
BOOL rangeOfUnit = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&dateOut interval:&count forDate:date];
if (rangeOfUnit) {
NSInteger interval = [calendar.timeZone secondsFromGMTForDate:dateOut];
NSDate *localeDate = [dateOut dateByAddingTimeInterval:interval];
NSLog(@"%@", dateOut);
NSLog(@"%@",localeDate);
NSLog(@"%f",count);
} else {
NSLog(@"无法计算");
}
rangeOfUnit = [calendar rangeOfWeekendStartDate:&dateOut interval:&count containingDate:date];
if (rangeOfUnit) {
NSInteger interval = [calendar.timeZone secon