首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

时间演算之Calendars

2012-09-24 
时间运算之CalendarsCreating a Calendar??1:You create a calendar object by specifying an identifier

时间运算之Calendars

Creating a Calendar

?

?

1:You create a calendar object by specifying an identifier for the calendar you want. Mac OS X provides data for several different calendars—Buddhist, Chinese, Gregorian, Hebrew, Islamic, and Japanese—specified by constants in NSLocale.

?

?

NSCalendar *japaneseCalendar = [[NSCalendar alloc]        initWithCalendarIdentifier:NSJapaneseCalendar];

?

?

2:You can get the calendar for the user's preferred locale (or in general from any NSLocale object) using the key NSLocaleCalendar,

?

NSCalendar *usersCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:        [[NSLocale currentLocale] objectForKey:NSLocaleCalendar]];

?

?

3:or most easily using the NSCalendar method currentCalendar. The following code fragment shows how to create a calendar object for the Japanese calendar, and for the current user:

?

?

NSCalendar *currentCalendar = [NSCalendar currentCalendar];

?

?


?
Calendrical Calculations

?

取得时间差

?

NSDate *startDate = ...;NSDate *endDate = ...; NSCalendar *gregorian = [[NSCalendar alloc]        initWithCalendarIdentifier:NSGregorianCalendar]; unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents *components = [gregorian components:unitFlags                                          fromDate:startDate                                          toDate:endDate options:0];int months = [components month];int days = [components day];

?

?

api:

?

?

1:从NSDate 中取得NSDateComponents 对象

?

Returns a NSDateComponents object containing a given date decomposed into specified components.

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date

?

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;NSDate *date = [NSDate date];NSDateComponents *comps = [gregorian components:unitFlags fromDate:date];

?

?

2:取得时间差

Returns, as an NSDateComponents object using specified components, the difference between two supplied dates.

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts

?

NSDate *startDate = ...;NSDate *endDate = ...;unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate  toDate:endDate  options:0];int months = [comps month];int days = [comps day];

?

3:在给定的NSDate 上增加几天,几年等。。。。

?

Returns a new NSDate object representing the absolute time calculated by adding given components to a given date.

- (NSDate *)dateByAddingComponents:(NSDateComponents *)comps toDate:(NSDate *)date options:(NSUInteger)opts

?

NSDate *currentDate = [NSDate date];NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setMonth:2];[comps setDay:3];NSDate *date = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];[comps release];

?

4:取得一个指定的时间

Returns a new NSDate object representing the absolute time calculated from given components.

- (NSDate *)dateFromComponents:(NSDateComponents *)comps

?

NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setYear:1965];[comps setMonth:1];[comps setDay:6];[comps setHour:14];[comps setMinute:10];[comps setSecond:0];NSDate *date = [gregorian dateFromComponents:comps];[comps release];

?

?


?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
};

热点排行