Thursday, June 13, 2013

NSCalendar NSEraCalendarUnit example in Objective C (iOS).


NSCalendar NSEraCalendarUnit

Calendar Units
Specify calendrical units such as day and month.

enum {
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),
};
typedef NSUInteger NSCalendarUnit;

Constants
NSEraCalendarUnit
Specifies the era unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitEra.
NSYearCalendarUnit
Specifies the year unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitYear.
NSMonthCalendarUnit
Specifies the month unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitMonth.
NSDayCalendarUnit
Specifies the day unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitDay.
NSHourCalendarUnit
Specifies the hour unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitHour.
NSMinuteCalendarUnit
Specifies the minute unit.
The corresponding value is an NSInteger. Equal to kCFCalendarUnitMinute.
NSSecondCalendarUnit
Specifies the second unit.
The corresponding value is a double. Equal to kCFCalendarUnitSecond.
NSWeekCalendarUnit
Specifies the week unit.
The corresponding value is an kCFCalendarUnitSecond. Equal to kCFCalendarUnitWeek.
NSWeekdayCalendarUnit
Specifies the weekday unit.
The corresponding value is an kCFCalendarUnitSecond. Equal to kCFCalendarUnitWeekday. The weekday units are the numbers 1 through N (where for the Gregorian calendar N=7 and 1 is Sunday).
NSWeekdayOrdinalCalendarUnit
Specifies the ordinal weekday unit.
The corresponding value is an kCFCalendarUnitSecond. Equal to kCFCalendarUnitWeekdayOrdinal. The weekday ordinal unit describes ordinal position within the month unit of the corresponding weekday unit. For example, in the Gregorian calendar a weekday ordinal unit of 2 for a weekday unit 3 indicates "the second Tuesday in the month".
NSQuarterCalendarUnit
Specifies the quarter of the calendar as an kCFCalendarUnitSecond.
NSWeekOfMonthCalendarUnit
Specifies the original week of a month calendar unit.
NSWeekOfYearCalendarUnit
Specifies the original week of the year calendar unit.
NSYearForWeekOfYearCalendarUnit
Specifies the year when the calendar is being interpreted as a week-based calendar.
NSCalendarCalendarUnit
Specifies the calendar of the calendar.
NSTimeZoneCalendarUnit
Specifies the time zone of the calendar as an NSTimeZone.

Discussion of [NSCalendar NSEraCalendarUnit]
Calendar units may be used as a bit mask to specify a combination of units. Values in this enum are equal to the corresponding constants in the CFCalendarUnit enum.
NSCalendar NSEraCalendarUnit example.
NSDateComponents *otherDay = [[NSCalendar currentCalendar] components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:aDate];
NSDateComponents *today = [[NSCalendar currentCalendar] components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
if([today day] == [otherDay day] &&
   [today month] == [otherDay month] &&
   [today year] == [otherDay year] &&
   [today era] == [otherDay era]) {
    //do stuff
}

Example of [NSCalendar NSEraCalendarUnit].
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]];
NSDate *today = [cal dateFromComponents:components];
components = [cal components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:aDate];
NSDate *otherDate = [cal dateFromComponents:components];

if([today isEqualToDate:otherDate]) {
    //do stuff
}

NSCalendar NSEraCalendarUnit example.
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDate* now = [NSDate date];
int differenceInDays =
    [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:date] -
    [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:now];

End of NSCalendar NSEraCalendarUnit example article.