項目中有一些與時間日期有關的處理,整理一下,不正確之處還望指正.
1.當前時間:
一般情況下,當前時間都是用
NSDate *date = [NSDate date];
用這個取年月日時沒有問題的,但是有時候因為時區(qū)的影響,可能得到的時分秒不是特別準確,所以需要取到當前時區(qū)(地區(qū))的時間:
NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone]; // 當前時區(qū)
NSInteger interval = [zone secondsFromGMTForDate: date]; // 與標準時間時差
NSDate *localDate = [date? dateByAddingTimeInterval: interval]; // 當前時區(qū)當前時間
NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSString *nowDate = [dateFormatter stringFromDate:localDate];
這樣就得到了準確的當前時間
2.星期幾的問題:
先寫一個星期數(shù)組,注意星期日在最前面.
以下的當前時間還是用 [NSDate date],也可以先為轉化上面的;
NSArray * arrWeek=[NSArray arrayWithObjects:@"星期日",@"星期一",@"星期二",@"星期三",@"星期四",@"星期五",@"星期六", nil];
NSDate *date = [NSDate date];? // 當前時間
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; // 日歷,歷法
NSDateComponents *comps = [[NSDateComponents alloc] init]; // 時間段,時間點
NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; // 需要得到的時間點(時間段)的時間單位
comps = [calendar components:unitFlags fromDate:date];
// 得到當前時間點的年月日星期幾的信息 int類型 或者interger類型
int week = (int)[comps weekday];
int year=(int)[comps year];
int month = (int)[comps month];
int day = (int)[comps day];
3.時間差:
以求現(xiàn)在距離未來某一個時間點之間的時間差為例,得到的也是一個NSDateComponents時間點,
NSDateFormatter *dateFomatter = [[NSDateFormatter alloc] init]; // 日期格式
dateFomatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date = [NSDate date]; // 當前時間
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:date];
NSDate *localDate = [date dateByAddingTimeInterval:interval]; // 當前時區(qū)當前時間
NSString *futureTime = @"2020-11-23 13:35:45"; // 未來的某一個時間
NSString *nowDateStr = [dateFomatter stringFromDate:localDate];
NSDate *futureDate = [dateFomatter dateFromString:openDateStr]; // 未來時間date
localDate = [dateFomatter dateFromString:nowDateStr]; // 同一時間格式(dateFormat)下的當前時間
// 當前日歷
NSCalendar *calendar = [NSCalendar currentCalendar];
// 需要對比的時間數(shù)據(jù)(年月日時分秒)
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth
| NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
// 對比時間差
NSDateComponents *dateComponent = [calendar components:unit fromDate:localDate toDate:futureDate options:0];
// 顯示時間差NSString *text = [NSString stringWithFormat:@"%ld年%ld月%ld天%ld時%ld分",dateComponent.year,dateComponent.month,dateComponent.day,dateComponent.hour,dateComponent.minute];