NSDate常用
標簽(空格分隔): 實用編程習慣-coding
[TOC]
1、字符串與日期的相互轉(zhuǎn)換
//NSDate求日期
NSDate *date = [NSDate date];
NSDateFormatter *fm = [[NSDateFormatter alloc] init];
fm.dateFormat = @"yyyy-MM-dd HH-mm-ss";
//-----日期轉(zhuǎn)換成字符串------
NSDate *lastDate = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:date];
NSString *dateString = [fm stringFromDate:lastDate];
NSLog(@"一天前的日期string :%@",dateString);
//-----字符串轉(zhuǎn)換成日期------
NSString *oneDateString = @"2022-12-6 18:01:33";
fm.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSDate *oneDate = [fm dateFromString:oneDateString];
NSLog(@"未來某天的日期Obj :%@",oneDate);
![image_1bgvjtsdmgvh14vk18vm9mmo8f9.png-38.7kB](http://static.zybuluo.com/maShaiLi/1hzc6iv3uvtmvnogzsdvceeh/image_1bgvjtsdmgvh14vk18vm9mmo8f9.png)
image_1bgvjtsdmgvh14vk18vm9mmo8f9.png-38.7kB
2、NSDateComponents獲取日期
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [NSDate date];
//日歷集合的結構體
NSCalendarUnit units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *comp = [calendar components:units fromDate:date];
NSLog(@"%@",comp);
NSLog(@"%zd年%zd月%zd日",comp.year,comp.month,comp.day);
![image_1bgvkrt2fbt51tkbha3m4tmnhm.png-46.9kB](http://static.zybuluo.com/maShaiLi/e1hh75t0fqtlvndq3s7g5shh/image_1bgvkrt2fbt51tkbha3m4tmnhm.png)
image_1bgvkrt2fbt51tkbha3m4tmnhm.png-46.9kB
3 獲取前一天或者后一天的日期
最low的方式
- 使用NSDateFormatter減去日期對應的秒數(shù)闲延,不過這樣,日期天數(shù)很多的時候前弯,秒數(shù)就幾千幾萬了有勾,所以推薦使用日歷里面的日期集合
高b格方式
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [NSDate date];
//日歷集合的結構體
NSCalendarUnit units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:-1];
[components setMonth:-1];
NSDate *lastMonth = [calendar dateByAddingComponents:components toDate:date options:kNilOptions];
components = [calendar components:units fromDate:lastMonth];
NSLog(@"去年的 上一個月 %@",components);
![image_1bgvljn2l18qe1ouf1aeudju37013.png-33.7kB](http://static.zybuluo.com/maShaiLi/klh9u8obiga55o7il28cnv3u/image_1bgvljn2l18qe1ouf1aeudju37013.png)
image_1bgvljn2l18qe1ouf1aeudju37013.png-33.7kB