NSDate 是一個日期的類
建立一個date
*date 擷取的時間無論是在哪個時區,都是列印相對應的零時區的時間 NSDate *date =[NSDate date ];NSLog(@"%@", date);// 結果:2015-07-23 16:04:00.431 OC07_NSDate[1430:100568] 2015-07-23 08:04:00 +0000
擷取一下當前所在的時區
NSTimeZone *zone =[NSTimeZone systemTimeZone];
NSLog(@"%@",zone);
// 結果:2015-07-23 16:03:27.180 OC07_NSDate[1422:100218] Asia/Shanghai (GMT+8) offset 28800 擷取一下和0時區相差的秒數
NSInteger seconds =[zone secondsFromGMTForDate:date];
NSLog(@"%ld", seconds);
// 結果: 2015-07-23 15:59:40.371 OC07_NSDate[1406:99223] 28800 通過相差的秒數,能擷取到現在的時間
NSDate *localDate =[NSDate dateWithTimeIntervalSinceNow:seconds];NSLog(@"%@",localDate);
NSTimeInterval:時間間隔
NSTimeInterval:對應的是double類型
NSTimeInterval計算兩個時間對象的時間間隔
NSTimeInterval interval =[tomorrowDate timeIntervalSinceDate:date];NSLog(@"%g",interval);// 結果:2015-07-23 16:21:11.947 OC07_NSDate[1489:104070] 115200
例1
計算目前時間和⼀一個固定時間的差值,如果差值在60秒內,輸出“剛 剛”,如果在60秒外3600秒內,輸出“xx分鐘前”,如果3600秒外, 3600*24秒內,輸出“xx⼩小時前”。 NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:1000];NSTimeInterval time =[date1 timeIntervalSinceDate:date];NSLog(@"%ld",(NSInteger)time);if (time <60) { NSLog(@"剛剛");}else if((time >=60)&&(time <3600)){ NSLog(@"%ld分鐘之前",(NSInteger)time/60);}else if((time >= 3600)&&(time<3600*24)){ NSLog(@"%g小時之前",time/3600);}
把日期和字串互相轉換
NSDate -> NSString NSDate *date =[NSDate date];NSString *dateStr =[NSString stringWithFormat:@"%@",date];NSLog(@"%@", dateStr);//結果: 2015-07-23 17:13:16.597 OC07_NSDate[1730:117413] 2015-07-23 09:13:16 +0000
字串 -> NSDate
把時間又減掉8小時
NSString *timeStr =@"2015-7-23 17-18-10";NSDate *date=[formatter dateFromString:timeStr];NSLog(@"%@", date);
時間的格式
yyyy-MM-dd HH-mm-ss
H 24小時制,h 12小時制 先設定一下時間的格式,要轉換的時間要和格式相吻合
NSDateFormatter *formatter =[[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];NSDate *date=[NSDate date];通過格式,把指定的時間直接轉換成NSString 通過這種方式,系統還會把時間切換到現在的時間NSString *strDate =[formatter stringFromDate:date];NSLog(@"%@",strDate); 結果:2015-07-23 17:16:11.551 OC07_NSDate[1747:118395] 2015-07-23 17-16-11