判斷是否為今年、是否為今天、是否為昨天,比較當前時間和from時間的差值
阿新 • • 發佈:2019-02-11
效果圖:
時間處理樣式:
1:建立NSDate的擴充套件類
NSDate+LMExtension.h
// Created by limin on 16/6/21. // Copyright © 2016年 limin. All rights reserved. // #import <Foundation/Foundation.h> @interface NSDate (LMExtension) /** 比較當前時間和from時間的差值*/ -(NSDateComponents *)deltaFrom:(NSDate *)from; /** 是否為今年*/ -(BOOL)isThisYear; /** 是否為今天*/ -(BOOL)isToday; /** 是否為昨天*/ -(BOOL)isYesterday; @end
NSDate+LMExtension.m
原文地址連結:http://blog.csdn.net/leemin_ios/article/details/51881853 點選開啟連結// // Created by limin on 16/6/21. // Copyright © 2016年 limin. All rights reserved. // #import "NSDate+LMExtension.h" @implementation NSDate (LMExtension) -(NSDateComponents *)deltaFrom:(NSDate *)from { //日曆 NSCalendar *calendar = [NSCalendar currentCalendar]; //比較時間 NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:from toDate:self options:0]; return comps; } -(BOOL)isThisYear { NSDate *now = [NSDate date]; //日曆 NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:now]; NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self]; return nowYear == selfYear; } /** 方法1:判斷是否為今天*/ -(BOOL)isToday { //日曆 NSCalendar *calendar = [NSCalendar currentCalendar]; NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSDateComponents *nowComps = [calendar components:unit fromDate:[NSDate date]]; NSDateComponents *selfComps = [calendar components:unit fromDate:self]; return nowComps.year == selfComps.year && nowComps.month == selfComps.month && nowComps.day == selfComps.day; } /** 方法2:判斷是否為今天*/ //-(BOOL)isToday //{ // NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init]; // dateformatter.dateFormat = @"yyyy-MM-dd"; // // NSString *nowString = [dateformatter stringFromDate:[NSDate date]]; // NSString *selfString = [dateformatter stringFromDate:self]; // return [nowString isEqualToString:selfString]; //} /** 判斷是否為昨天*/ -(BOOL)isYesterday { NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init]; dateformatter.dateFormat = @"yyyy-MM-dd"; NSDate *nowDate = [dateformatter dateFromString:[dateformatter stringFromDate:[NSDate date]]]; NSDate *selfDate = [dateformatter dateFromString:[dateformatter stringFromDate:self]]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps = [calendar components: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0]; return comps.year == 0 && comps.month == 0 && comps.day == 1; } @end
2: 時間賦值.
//Label賦值建立時間
[self setupCreateTime:topicsModel.create_time];
setupCreateTime: 方法實現
#pragma mark - 時間處理 /** *self.createTimeLabel:時間標籤 *今天: [ 1分鐘內:剛剛 1小時內:xx分鐘前 其他:xx小時前 ] *昨天:幾點幾分 *其他:6-13 19:12 *不是今年:去年:年份2014-5-8 18:40:30 */ -(void)setupCreateTime:(NSString *)create_time { //設定日期格式 NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; //建立時間 NSDate *createDate = [formatter dateFromString:create_time]; if (createDate.isThisYear) {//今年 if (createDate.isToday) {//今天 //當前時間 NSDate *nowDate = [NSDate date]; //比較時間 NSDateComponents *comps = [nowDate deltaFrom:createDate]; if (comps.hour >= 1) { //時間差距>=1小時 [self.createTimeLabel setText:[NSString stringWithFormat:@"%zd小時前",comps.hour]]; }else if (comps.minute >= 1) { //時間差距<1小時,>=1分鐘 [self.createTimeLabel setText:[NSString stringWithFormat:@"%zd分鐘前",comps.minute]]; }else {// 時間差距<1分鐘 [self.createTimeLabel setText:@"剛剛"]; } }else if (createDate.isYesterday)//昨天 { formatter.dateFormat = @"昨天 HH:mm:ss"; [self.createTimeLabel setText:[formatter stringFromDate:createDate]]; }else {//其他 formatter.dateFormat = @"MM-dd HH:mm:ss"; [self.createTimeLabel setText:[formatter stringFromDate:createDate]]; } }else//非今年 { [self.createTimeLabel setText:create_time]; } }