美文网首页
iOS -- (NSDate、NSCalendar和NSDa

iOS -- (NSDate、NSCalendar和NSDa

作者: 温柔vs先生 | 来源:发表于2018-03-06 11:41 被阅读0次
NSDate

1.NSDate对象用来表示一个具体的时间点;
2.NSDate是一个类簇。我们所使用的NSDate对象,都是NSDate的私有之类的实体;
3.NSDate储存的是GMT时间,使用的时候会根据当前应用指定的时区进行时间上的增减,以供计算或显示

NSCalendar

NSCalendar:日历。对世界上现存的常用历法进行了封装,即提供了不同的历法的时间信息,又支持日历的计算。

NSDateComponents

NSDateComponents:时间容器,一个包含了详细的年月日时分秒的容器。


三者之间的用法

相对时间(从现在往后2年5个月11天10小时,年月日时分秒均可配置)
NSDateComponents * components = [[NSDateComponents alloc] init];

components.year = 2;

components.month = 5;

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);

获取指定时间当月的天数
/**
  计算某个时间的当月天数
 
 @param targetDate 目标时间
 @return 天数
 */
- (NSInteger)getNumberOfDaysInMonth:(NSDate *)targetDate {
    NSCalendar *calendar    = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];//指定日历的算法
    NSRange range           = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:targetDate];
    return range.length;
}

获取两个时间的天数差
/**
 获取两个时间的天数差

 @param firstDate 第一个时间
 @param secondDate 第二个时间
 @return 比较得出的天数差
 */
- (NSInteger)getDateToDateDays:(NSDate *)firstDate withSaveDate:(NSDate *)secondDate {
    NSCalendar* chineseClendar  = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSUInteger unitFlags        = NSCalendarUnitYear | NSCalendarUnitMinute |
    NSCalendarUnitSecond | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear;
    NSDateComponents *cps       = [chineseClendar components:unitFlags fromDate:firstDate toDate:secondDate  options:0];
    NSInteger diffDay           = [cps day];
    return diffDay;
}

参考文章:

https://www.jianshu.com/p/d0e56b09179a

http://blog.csdn.net/u010545480/article/details/50560731

相关文章

网友评论

      本文标题:iOS -- (NSDate、NSCalendar和NSDa

      本文链接:https://www.haomeiwen.com/subject/qoulfftx.html