#import <Foundation/Foundation.h>
@interface NSCalendar (CqExtension)
+ (instancetype)Cq_calendar;
@end
---------------------------------------------------
#import "NSCalendar+CqExtension.h"
@implementation NSCalendar (CqExtension)
+ (instancetype)Cq_calendar{
// 判斷NSCalendar這個(gè)類是否有calendarWithIdentifier:這個(gè)[類方法],類方法判斷是否存在方法可以用于版本的判斷
if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
return [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
}else{
return [NSCalendar currentCalendar];
}
}
#import <Foundation/Foundation.h>
@interface CqDateItem : NSObject
/** 天 */
@property (nonatomic,assign) NSInteger day;
/** 時(shí) */
@property (nonatomic,assign) NSInteger hour;
/** 分 */
@property (nonatomic,assign) NSInteger minute;
/** 秒 */
@property (nonatomic,assign) NSInteger second;
@end
@interface NSDate (CqExtension)
- (CqDateItem *)Cq_timeIntervalSinceDate:(NSDate *)anotherDate;
//是否當(dāng)前天
- (BOOL)Cq_isToday;
//是否昨天
- (BOOL)Cq_isYesterday;
//是否當(dāng)前天
- (BOOL)Cq_isTomorrow;
//是否今年
- (BOOL)Cq_isThisYear;
@end
---------------------------------------------------
#import "NSDate+CqExtension.h"
#import "NSCalendar+CqExtension.h"
@implementation CqDateItem
- (NSString *)description{
return [NSString stringWithFormat:@"%zd天%zd時(shí)%zd分%zd秒",self.day,self.hour,self.minute,self.second];
}
@end
@implementation NSDate (CqExtension)
- (CqDateItem *)Cq_timeIntervalSinceDate:(NSDate *)anotherDate{
//創(chuàng)建時(shí)間createAtDate 和 nowDate的時(shí)間間隔
NSTimeInterval interval = [self timeIntervalSinceDate:anotherDate];
CqDateItem *item = [[CqDateItem alloc] init];
//相差多少天
int intInterval = (int)interval;
int secondPerDay = 24 * 3600;
item.day = intInterval / secondPerDay;
//相差幾小時(shí)
int secondPerHour = 3600;
item.hour = (intInterval % secondPerDay) / secondPerHour;
//相差幾分鐘
int secondPerMinute = 60;
item.minute = ((intInterval % secondPerDay) % secondPerHour) / secondPerMinute;
//相差幾秒
item.second = ((intInterval % secondPerDay) % secondPerHour) % secondPerMinute;
return item;
}
- (BOOL)Cq_isToday{
//判斷self這日期是否是今天
NSCalendar *calendar = [NSCalendar Cq_calendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *selfCmp = [calendar components:unit fromDate:self];
NSDateComponents *nowCmp = [calendar components:unit fromDate:[NSDate date]];
return [selfCmp isEqual:nowCmp];
}
- (BOOL)Cq_isYesterday{
// self 2015-12-09 22:10:01 -> 2015-12-09 00:00:00
// now 2015-12-10 12:10:01 -> 2015-12-01 00:00:00
// 昨天:0year 0month 1day 0hour 0minute 0second
// NSDate * -> NSString * -> NSDate *
//判斷這日期是否昨天
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyyMMdd";
//生成只有年月日的字符串對象
NSString *selfString = [fmt stringFromDate:self];
NSString *nowString = [fmt stringFromDate:[NSDate date]];
//生成只有年月日的日期對象
NSDate *selfDate = [fmt dateFromString:selfString];
NSDate *nowDate = [fmt dateFromString:nowString];
NSCalendar *calendar = [NSCalendar Cq_calendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:0];
return cmps.year == 0
&& cmps.month == 0
&& cmps.day == 1;
}
- (BOOL)Cq_isTomorrow{
//判斷這日期是否昨天
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyyMMdd";
//生成只有年月日的字符串對象
NSString *selfString = [fmt stringFromDate:self];
NSString *nowString = [fmt stringFromDate:[NSDate date]];
//生成只有年月日的日期對象
NSDate *selfDate = [fmt dateFromString:selfString];
NSDate *nowDate = [fmt dateFromString:nowString];
NSCalendar *calendar = [NSCalendar Cq_calendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:0];
return cmps.year == 0
&& cmps.month == 0
&& cmps.day == -1;
}
- (BOOL)Cq_isThisYear{
//判斷self的日期是否今年
NSCalendar *calendar = [NSCalendar Cq_calendar];
NSInteger selfYear = [calendar components:NSCalendarUnitYear fromDate:self].year;
NSInteger nowYear = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]].year;
return selfYear == nowYear;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者