iOS開發日記26-詳解時間戳

今天博主有一個時間戳的需求,遇到了一些困難點,在此和你們分享,但願可以共同進步.ide

iOS開發中,咱們在不少狀況下都會遇到使用當下時間做爲參數的狀況,這稱之爲時間戳.在iOSSDK中,與時間戳相關的API主要有三個,NSDate,NSCalendar和NSDate​Components.spa

NSDate 就是一個絕對的時間,能夠換算成相對1970s的時差.component

NSCalendar 顧名思義就是日曆,封裝了系統如何按照年月日的方式來組織時間,組織時間的方式和地區,時區有很大關係.orm

NSDate​Components 只是一個容器,容器中詳細包含了年月日時分等信息.開發

其中NSDate相信你們用的比較多,就不在這裏贅述了,各位看官自行百度,今天主要和你們分享一下NSCalendar和NSDate​Components,下面舉幾個例子,並貼出代碼,讓你們能更好的理解.string

1.拆分一個時間it

NSDate * date = [NSDate date];//當前時間io

NSCalendar * calendar = [NSCalendar currentCalendar];//當前用戶的calendarform

NSDateComponents * components = [calendar components:NSCalendarUnitMinute | NSCalendarUnitMonth | NSCalendarUnitHour | NSCalendarUnitDay fromDate:date];容器

NSLog(@"%ld月%ld日%ld時%ld分" ,(long)components.month,(long)components.day,(long)components.hour,(long)components.minute);

2.查看今天是在今年的第幾周

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSInteger week = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitYear forDate:currentDate];

NSLog(@"今天是今年的第%ld周",week);

3.根據拆分時間返回NSDate

NSDateComponents * components = [[NSDateComponents alloc] init];

components.year = 2015;

components.month = 9;

components.day = 28;

components.hour = 14;

components.minute = 38;

components.second = 20;

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * date = [calendar dateFromComponents:components];

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy年MM月dd日hh時mm分ss秒";

NSString * str = [formatter stringFromDate:date];

NSLog(@"%@",str);

4.相對時間(如今日後11天10小時)

NSDateComponents * components = [[NSDateComponents alloc] init];

components.day = 11;

components.hour = 10;

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSDate * nextData = [calendar dateByAddingComponents:components toDate:currentDate options:NSCalendarMatchStrictly];

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy年MM月dd日hh時mm分ss秒";

NSString * str = [formatter stringFromDate:nextData];

NSLog(@"%@",str);

5.這個月還有多少天

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:currentDate];

6.補充

①.建立不一樣地區的NSCalendar

initWithCalendarIdentifier:

其中有效的identifer:

NSString * const NSGregorianCalendar;

NSString * const NSBuddhistCalendar;

NSString * const NSChineseCalendar;

NSString * const NSHebrewCalendar;

NSString * const NSIslamicCalendar;

NSString * const NSIslamicCivilCalendar;

NSString * const NSJapaneseCalendar;

NSString * const NSRepublicOfChinaCalendar;

NSString * const NSPersianCalendar;

NSString * const NSIndianCalendar;

NSString * const NSISO8601Calendar;

②.一週的開始日期

firstWeekday

③.地區和時區

locale 和 timeZone

④.全部的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).

相關文章
相關標籤/搜索