IOS SDK Nscalendar & nsdate? Components

Source: Internet
Author: User
Tags dateformat time zones

Original blog, reproduced please indicate the source
Happy drink Follow my iOS SDK detailed column

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.

    • 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.

Split a time

 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 ); 


   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.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

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);


   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.

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);


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

Create Nscalendar in different regions


One of the effective identifer


Start date of the week

– firstWeekday

Time Zones and regions


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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.