NSDatecode
@interface NSDate : NSObject <NSCopying, NSSecureCoding>
NSDateComponentscomponent
@interface NSDateComponents : NSObject <NSCopying, NSSecureCoding>
NSDateFormatterorm
@interface NSDateFormatter : NSFormatter
// 對象方法 // 當前時間值,GMT 時間 NSDate *date1 = [[NSDate alloc] init]; // 當前時間加 n 秒後的值 NSDate *date2 = [[NSDate alloc] initWithTimeIntervalSinceNow:10]; // 某個時間增長 n 秒後的值 NSDate *date3 = [[NSDate alloc] initWithTimeInterval:10 sinceDate:date2]; // 從 1970-01-01 00:00:00 (GMT) 增長 n 秒後的值 NSDate *date4 = [[NSDate alloc] initWithTimeIntervalSince1970:3600]; // 從 2001-01-01 00:00:00 (GMT) 增長 n 秒後的值 NSDate *date5 = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:10]; // 類方法 // 當前時間值,GMT 時間 NSDate *date6 = [NSDate date]; // 當前時間加 n 秒後的值 NSDate *date7 = [NSDate dateWithTimeIntervalSinceNow:10]; // 某個時間增長 n 秒後的值 NSDate *date8 = [NSDate dateWithTimeInterval:10 sinceDate:date2]; // 從 1970-01-01 00:00:00 (GMT) 增長 n 秒後的值 NSDate *date9 = [NSDate dateWithTimeIntervalSince1970:3600]; // 從 2001-01-01 00:00:00 (GMT) 增長 n 秒後的值 NSDate *date10 = [NSDate dateWithTimeIntervalSinceReferenceDate:10]; // 將來某一個隨機時間 NSDate *date11 = [NSDate distantFuture]; // 過去某一個隨機時間 NSDate *date12 = [NSDate distantPast]; // 指定時間間隔 /* 某個時間增長 n 秒後的值 */ NSDate *date13 = [date6 dateByAddingTimeInterval:20];
NSDate *date1 = [NSDate date]; NSDate *date2 = [date1 dateByAddingTimeInterval:20]; // 實例保存的時間 與 當前時間 的時間間隔,單位 秒 NSTimeInterval interval1 = [date2 timeIntervalSinceNow]; // 實例保存的時間 與 指定時間 的時間間隔,單位 秒 NSTimeInterval interval2 = [date2 timeIntervalSinceDate:date1]; // 實例保存的時間 與 1970-01-01 00:00:00 (GMT) 的時間間隔,單位 秒 NSTimeInterval interval3 = [date1 timeIntervalSince1970]; // 實例保存的時間 與 2001-01-01 00:00:00 (GMT) 的時間間隔,單位 秒 NSTimeInterval interval4 = [date1 timeIntervalSinceReferenceDate]; // 當前時間 與 2001-01-01 00:00:00 (GMT) 的時間間隔,單位 秒 NSTimeInterval interval5 = [NSDate timeIntervalSinceReferenceDate];
NSDate *date1 = [NSDate date]; NSDate *date2 = [date1 dateByAddingTimeInterval:10]; // isEqualToDate // 判斷兩個時間是否相等 BOOL bl = [date1 isEqualToDate:date2]; // compare // 比較兩個時間大小 NSComparisonResult result = [date1 compare:date2]; // earlierDate // 比較兩個時間,返回 較早的時間 NSDate *date3 = [date1 earlierDate:date2]; // laterDate // 比較兩個時間,返回 較晚的時間 NSDate *date4 = [date1 laterDate:date2];
// 由手動設置建立 NSDateComponents *compt1 = [[NSDateComponents alloc] init]; // 日曆 [compt1 setCalendar:[NSCalendar currentCalendar]]; // 時區 [compt1 setTimeZone:[NSTimeZone systemTimeZone]]; // 紀元 [compt1 setEra:1]; // 年 [compt1 setYear:2016]; // 月 [compt1 setMonth:3]; // 日 [compt1 setDay:1]; // 時 [compt1 setHour:00]; // 分 [compt1 setMinute:10]; // 秒 [compt1 setSecond:55]; // 微妙 [compt1 setNanosecond:280]; // 刻鐘 [compt1 setQuarter:0]; // 周幾 [compt1 setWeekday:3]; // 指定日期爲本月的第幾個星期幾 [compt1 setWeekdayOrdinal:1]; // 指定日期爲本月的第幾周 [compt1 setWeekOfMonth:1]; // 指定日期爲本年的第幾周 [compt1 setWeekOfYear:10]; // [compt1 setYearForWeekOfYear:2016]; // 由已知 date 建立 /* 只有明確指定了 unitFlags,NSDateComponents 相應的那一部分纔有值 */ NSDateComponents *compt2 = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitNanosecond | NSCalendarUnitQuarter | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitWeekOfMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitYearForWeekOfYear | NSCalendarUnitCalendar | NSCalendarUnitTimeZone fromDate:[NSDate date]];
NSDate *date1 = [NSDate date]; NSDate *date2 = [NSDate dateWithTimeInterval:5*60*60+75 sinceDate:date1]; NSDateComponents *compt = [[NSCalendar currentCalendar] components:NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:date1 toDate:date2 options:0];
NSCalendar *calendar = [NSCalendar currentCalendar]; // NSDate 轉 NSDateComponents NSDateComponents *compt = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]]; // NSDateComponents 轉 NSDate // 轉換時間時,使用默認的時區 GMT 時區 NSDate *date = [calendar dateFromComponents:compt]; // 獲得本地時間,避免時區問題 date = [date dateByAddingTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMTForDate:date]];
NSDateComponents *compt = [[NSDateComponents alloc] init]; [compt setDay:25]; [compt setHour:4]; [compt setMinute:66]; // NSDate 加上 NSDateComponents 表示的一段時間 NSDate *date = [[NSCalendar currentCalendar] dateByAddingComponents:compt toDate:[NSDate date] options:0]; // 獲得本地時間,避免時區問題 date = [date dateByAddingTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMTForDate:date]];
G -- 紀元 通常會顯示公元前(BC)和公元(AD) y -- 年 假如是2013年,那麼 yyyy=2013,yy=13 M -- 月 假如是3月,那麼 M=3,MM=03,MMM=Mar,MMMM=March;假如是11月,那麼M=11,MM=11, MMM=Nov,MMMM=November w -- 一年中的第幾周 假如是1月8日,那麼 w=2(這一年的第二個周) W -- 一個月中的第幾周 與日曆排列有關,假如是2013年4月21日,那麼 W=4(這個月的第四個周) F -- 月份包含的周 與日曆排列無關,和上面的 W 不同,F 只是單純以7天爲一個單位來統計周,例如7號必定是第一個周, 15號必定是第三個周,與日曆排列無關。 D -- 一年中的第幾天 假如是1月20日,那麼 D=20(這一年的第20天);假如是2月25日,那麼 D=31+25=56(這一年的第56天) d -- 一個月中的第幾天 假如是5號,那麼 d=5,dd=05 假如是15號,那麼 d=15,dd=15 E -- 星期幾 假如是星期五,那麼 E=Fri,EEEE=Friday a -- 上午(AM)/下午(PM) H -- 24小時制 顯示爲0--23,假如是午夜00:40,那麼 H=0:40,HH=00:40 h -- 12小時制 顯示爲1--12,假如是午夜00:40,那麼 h=12:40 K -- 12小時制 顯示爲0--11,假如是午夜00:40,那麼 K=0:40,KK=00:40 k -- 24小時制 顯示爲1--24,假如是午夜00:40,那麼 k=24:40 m -- 分鐘 假如是5分鐘,那麼 m=5,mm=05;假如是45分鐘,那麼 m=45,mm=45 s -- 秒 假如是5秒鐘,那麼 s=5,ss=05;假如是45秒鐘,那麼 s=45,ss=45 S -- 毫秒 通常用 SSS 來顯示 z -- 時區 表現形式爲 GMT+08:00 Z -- 時區 表現形式爲 +0800 // 使用 NSDateFormatter 轉換時間字符串時,默認的時區是系統時區,例如在中國通常都是北京時間(+8), // 若是直接轉換會致使結果相差8小時,因此通常的作法是先指定時區爲GMT標準時間再轉換。 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 設置時區,不設置時默認的時區是系統時區(GMT+8) [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; // 設置日期格式,以字符串表示的日期形式的格式 [formatter setDateFormat:@"G yyyy-MM-dd E D F w W a z HH:mm:ss.SSS"]; // 格式化日期,GMT 時間,NSDate 轉 NSString NSString *str = [formatter stringFromDate:[NSDate date]];
// 計算日期 NSDate *date = [NSDate dateWithTimeIntervalSince1970:1437494603]; // 建立時間戳 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 設置日期格式,以字符串表示的日期形式的格式 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // 轉換成指定的格式 NSString *string = [formatter stringFromDate:date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 設置時區 GMT [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; // 加入一些別的英文字符串時,需用單引號來引入 [formatter setDateFormat:@"yyyy年MM月dd日 HH點mm分ss秒 'iOS Date Test'"]; // NSString 轉 NSDate NSDate *date = [formatter dateFromString:@"2016年01月12日 1點8分50秒"]; // NSDate 轉 NSString NSString *str = [formatter stringFromDate:date];
// 獲得當前時間(世界標準時間 UTC/GMT) NSDate *date = [NSDate date]; // 設置系統時區爲本地時區 NSTimeZone *zone = [NSTimeZone systemTimeZone]; // 計算本地時區與 GMT 時區的時間差 NSInteger interval = [zone secondsFromGMT]; // 在 GMT 時間基礎上追加時間差值,獲得本地時間 date = [date dateByAddingTimeInterval:interval];