Original blog, reproduced please indicate the source
Blog.csdn.net/hello_hwc
Happy drink Follow my iOS SDK detailed column
Http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
Preface: Nscalendar and NSDate? Components are two classes that are important for the iOS time-related API. It's just been used recently, and it's sorted out here.
Concept
- Nscalendar, as the name implies, is a calendar that encapsulates how the system organizes time by month and day, how the time is organized and the region, and the time zone is of great relevance.
- NSDate? The components are just a container that contains information such as month and day.
- NSDate is an absolute time that can be converted to a relative 1970s of jet lag.
Example
Split a time
Oc
nsdate * date = [ Date]; //Current time nscalendar * calendar = [nscalendar Currentcalendar]; //the current user's calendar nsdatecomponents * components = [Calendar Components:nscalendarunitminute | Nscalendarunitmonth | Nscalendarunithour | Nscalendarunitday Fromdate:date]; nslog (@, (long ) Components.month , (long ) components .day , (long ) components .hour , (long ) components .minute );
Swift
let date = NSDate() let calendar = NSCalendar.currentCalendar() let components = calendar.components(NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, fromDate:date) NSLog("%ld月%ld日%ld时%ld分" ,components.month, components.day, components.hour, components.minute)
relative ordinal
For example, view today is the first week of the year
NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * currentDate = [NSDate date]; NSInteger week = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitYear forDate:currentDate]; NSLog(@"今天是今年的第%ld周",week);
returns nsdate based on split time
Oc
nsdatecomponents * components = [[Nsdatecomponents alloc] init]; Components. Year= -; Components.Month=7; Components. Day= One; Components.Hour=Ten; Components.minute= -; Components.Second= -; Nscalendar * Calendar = [Nscalendar Currentcalendar]; NSDate *Date= [Calendar datefromcomponents:components]; NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; Formatter.dateformat = @"yyyy mm month DD day hh" mm min ss sec "; NSString * str = [Formatter stringfromdate:Date]; NSLog (@"%@", str);
Swift
Letcomponents = Nsdatecomponents (). Year= -Components.Month=7Components. Day= OneComponents.Hour=TenComponents.minute= -Components.Second= - LetCalendar = Nscalendar.currentcalendar () Let Date= calendar.datefromcomponents (components) LetFormatter = NSDateFormatter (); Formatter.dateformat ="yyyy mm month DD day hh" mm min ss sec "; Letstr = formatter.stringfromdate (Date!); println (str)
Relative time
Now 11 days, 10 hours.
Oc
nsdatecomponents * components = [[Nsdatecomponents alloc] init]; Components. Day= One; Components. Hour=Ten;Nscalendar* Calendar = [NscalendarCurrentcalendar];NSDate* currentdate = [NSDateDate];NSDate* Nextdata = [Calendar datebyaddingcomponents:components todate:currentdate options:nscalendarmatchstrictly]; NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; Formatter. DateFormat= @"yyyy mm month DD day hh" mm min ss sec ";NSString* str = [formatter stringfromdate:nextdata];NSLog(@"%@", str);
Swift
let1110;let calendar = NSCalendar.currentCalendar();let currentDate = NSDate()let nextDate = calendar.dateByAddingComponents(components, toDate: currentDate, options:NSCalendarOptions.MatchStrictly)let"yyyy年MM月dd日hh时mm分ss秒";let str = formatter.stringFromDate(nextDate!)NSLog("%@",str);
How many days are there this month?
NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * currentDate = [NSDate date]; NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:currentDate];
Other
Create Nscalendar in different regions
initWithCalendarIdentifier:
One of the effective identifer
NSString*ConstNsgregoriancalendar;NSString*ConstNsbuddhistcalendar;NSString*ConstNschinesecalendar;NSString*ConstNshebrewcalendar;NSString*ConstNsislamiccalendar;NSString*ConstNsislamiccivilcalendar;NSString*ConstNsjapanesecalendar;NSString*ConstNsrepublicofchinacalendar;NSString*ConstNspersiancalendar;NSString*ConstNsindiancalendar;NSString*ConstNsiso8601calendar;
Start date of the week
– firstWeekday
Time Zones and regions
localetimeZone
All the Nscalendarunit
NSEraCalendarUnit = kCFCalendarUnitEra, NSYearCalendarUnit = kCFCalendarUnitYear, NSMonthCalendarUnit = kCFCalendarUnitMonth, NSDayCalendarUnit = kCFCalendarUnitDay, NSHourCalendarUnit = kCFCalendarUnitHour, NSMinuteCalendarUnit = kCFCalendarUnitMinute, NSSecondCalendarUnit = kCFCalendarUnitSecond, NSWeekCalendarUnit = kCFCalendarUnitWeek, NSWeekdayCalendarUnit = kCFCalendarUnitWeekday, NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal, NSQuarterCalendarUnit = kCFCalendarUnitQuarter, NSWeekOfMonthCalendarUnit = kCFCalendarUnitWeekOfMonth, NSWeekOfYearCalendarUnit = kCFCalendarUnitWeekOfYear, NSYearForWeekOfYearCalendarUnit = kCFCalendarUnitYearForWeekOfYear NSCalendarCalendarUnit = (1 << 20), NSTimeZoneCalendarUnit = (1 << 21),
Copyright NOTICE: This article is for bloggers original article, if you need to reprint please indicate the source
IOS SDK Nscalendar & nsdate? Components