NSDate

2018-02-27  本文已影响11人  Miss_QL

NSDate类,是Objec-C 语言种时间的封装类,处理关于时间的一些功能。
大致总结了一下:

1、获取当前时间

NSDate *nowDate = [NSDate date];

2、零时区时间转化为当地时间

NSDate * inputDate = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString * str = [formatter stringFromDate:inputDate];
NSLog(@"零时区时间 = %@, 当地时间 = %@", inputDate, str);

3、根据时间戳的值转化为时间对象

NSDate * pubDate = [NSDate dateWithTimeIntervalSince1970:[self.infoObj.pubDate floatValue]];

4、计算时间间隔

- (NSString *)CalDateIntervalFromData:(NSDate *)paramStartDate endDate:(NSDate*)paramEndDate{
    NSString * strResult = nil;
    NSCalendar * chineseClendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSUInteger unitFlags =  NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit| NSMonthCalendarUnit | NSYearCalendarUnit;

NSDateComponents * DateComponent = [chineseClendar components:unitFlags fromDate:paramStartDate toDate:paramEndDate options:0];
    NSInteger diffHour = [DateComponent hour];
    NSInteger diffMin = [DateComponent minute];
    NSInteger diffSec = [DateComponent second];
    NSInteger diffDay = [DateComponent day];
    NSInteger diffMon = [DateComponent month];
    NSInteger diffYear = [DateComponent year];
    
    if (diffYear>0) {
        strResult = [NSString stringWithFormat:@"%ld 年前",(long)diffYear];
    } else if(diffMon>0) {
        strResult = [NSString stringWithFormat:@"%ld 月前",(long)diffMon];
    } else if(diffDay>0) {
        strResult = [NSString stringWithFormat:@"%ld 天前",(long)diffDay];
    } else if(diffHour>0) {
        strResult = [NSString stringWithFormat:@"%ld 小时前",(long)diffHour];
    } else if(diffMin>0) {
        strResult = [NSString stringWithFormat:@"%ld 分钟前",(long)diffMin];
    } else if(diffSec>0) {
        strResult = [NSString stringWithFormat:@"%ld 秒前",(long)diffSec];
    } else {
        strResult = [NSString stringWithFormat:@"未知时间"];
    }
    [chineseClendar release];
    return strResult;
}

5、利用date加减月份

// 给一个时间,给一个数,正数是以后n个月,负数是前n个月;
-(NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(int)month {
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setMonth:month];
    NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *mDate = [calender dateByAddingComponents:comps toDate:date options:0];
    return mDate;
}
上一篇下一篇

猜你喜欢

热点阅读