iOS 時間對比,判斷幾分鐘前谊路、幾小時前讹躯、昨天、本周幾
/*
?* 需要傳入的時間格式 2017-06-14 14:18:54
?*/
// 和當(dāng)前時間進(jìn)行比較? 輸出字符串為(剛剛幾個小時前 幾天前 )
+(NSString?*)inputTimeStr:(NSString?*)timeStr
{
?NSDate?*nowDate = [NSDate?date];
?NSDate?*sinceDate = [self?becomeDateStr:timeStr];
?int?i? = [nowDate?timeIntervalSinceDate:sinceDate];
?NSString*str? =?@"";
?if?(i <=?60)
? ? {//小于60s
str =?@"剛剛";
}else?if(i>60?&& i<=3600)
? ? {//大于60s缠劝,小于一小時
? ? ? ? str = [NSString?stringWithFormat:@"%d分鐘前",i/60];
}else?if?(i>3600?&& i<60*60*24)
{//
?if?([self?isYesterdayWithDate:sinceDate])
? ? ? ? {//24小時內(nèi)可能是昨天
? ? ? ? ? ? str = [NSString?stringWithFormat:@"昨天"];
}else
{//今天
str = [NSString?stringWithFormat:@"%d小時前",i/3600];
? ? ? ? }
}else
{//
?int?k = i/(3600*24);
?if?([self?isYesterdayWithDate:sinceDate])
? ? ? ? {//大于24小時也可能是昨天
? ? ? ? ? ? str = [NSString?stringWithFormat:@"昨天"];
}else
? ? ? ? {
?//在這里大于1天的我們可以以周幾的形式顯示
?if?(k>=1)
? ? ? ? ? ? {
?if?(k < [self?getNowDateWeek])
{//本周
str? = [self?weekdayStringFromDate:[self?becomeDateStr:timeStr]];
}else
{//不是本周
//? ? ? ? ? ? ? ? ? ? str? = [NSString stringWithFormat:@"不是本周%@",[self weekdayStringFromDate:[self becomeDateStr:timeStr]]];
? ? ? ? ? ? ? ? ? ? str? = timeStr;
? ? ? ? ? ? ? ? }
}else
{//
str = [NSString?stringWithFormat:@"%d天前",i/(3600*24)];
? ? ? ? ? ? }
? ? ? ? }
? ? }
?return?str;
}
//把時間字符串轉(zhuǎn)換成NSDate
+ (NSDate?*)becomeDateStr:(NSString?*)dateStr
{
?NSDateFormatter?*formatter2 = [[NSDateFormatter?alloc]init];
[formatter2?setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
?NSDate?*date1 = [formatter2?dateFromString:dateStr];
?return?date1;
}
//把時間轉(zhuǎn)換成星期
+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
?NSArray?*weekdays = [NSArray?arrayWithObjects: [NSNull?null],?@"周日",?@"周一",?@"周二",?@"周三",?@"周四",?@"周五",?@"周六",?nil];
?NSCalendar?*calendar?= [[NSCalendar?alloc]?initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
?//? ? NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
?NSTimeZone?*timeZone = [[NSTimeZone?alloc]?initWithName:@"zh-Hans"];
[calendar?setTimeZone: timeZone];
?NSCalendarUnit?calendarUnit =?NSCalendarUnitWeekday;
?NSDateComponents?*theComponents = [calendar?components:calendarUnit?fromDate:inputDate];
?return?[weekdays?objectAtIndex:theComponents.weekday];
}
//判斷是否為昨天
+ (BOOL)isYesterdayWithDate:(NSDate?*)newDate
{
?BOOL?isYesterday =?YES;
?NSTimeInterval?secondsPerDay =?24?*?60?*?60;
?//
?NSDate?*yearsterDay =? [[NSDate?alloc]?initWithTimeIntervalSinceNow:-secondsPerDay];
?/** 前天判斷
?? ? //? ? NSDate *qianToday =? [[NSDate alloc] initWithTimeIntervalSinceNow:-2*secondsPerDay];
?? ? //? ? NSDateComponents* comp3 = [calendar components:unitFlags fromDate:qianToday];
?? ? //? ? if (comp1.year == comp3.year && comp1.month == comp3.month && comp1.day == comp3.day)
?? ? //? ? {
?? ? //? ? ? ? dateContent = @"前天";
?? ? //? ? }
?? ? **/
?NSCalendar* calendar = [NSCalendar?currentCalendar];
?unsigned?unitFlags =?NSCalendarUnitYear?|?NSCalendarUnitMonth?|?NSCalendarUnitDay;
?//? ? unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |? NSDayCalendarUnit;
?NSDateComponents* comp1 = [calendar?components:unitFlags?fromDate:newDate];
?NSDateComponents* comp2 = [calendar?components:unitFlags?fromDate:yearsterDay];
?if?( comp1.year?== comp2.year?&& comp1.month?== comp2.month?&& comp1.day?== comp2.day)
? ? {
isYesterday =?YES;
}else
? ? {
isYesterday =?NO;
? ? }
?return?isYesterday;
}
//判斷今天是本周的第幾天
+ (int)getNowDateWeek
{
?NSDate?*nowDate = [NSDate?date];
?NSString?*nowWeekStr = [self?weekdayStringFromDate:nowDate];
?intfactWeekDay =?0;
?if?([nowWeekStr?isEqualToString:@"周日"])
? ? {
factWeekDay =?7;
}else?if?([nowWeekStr?isEqualToString:@"周一"])
? ? {
factWeekDay =?1;
}else?if?([nowWeekStr?isEqualToString:@"周二"])
? ? {
factWeekDay =?2;
}else?if?([nowWeekStr?isEqualToString:@"周三"])
? ? {
factWeekDay =?3;
}else?if?([nowWeekStr?isEqualToString:@"周四"])
? ? {
factWeekDay =?4;
}else?if?([nowWeekStr?isEqualToString:@"周五"])
? ? {
factWeekDay =?5;
}else?if?([nowWeekStr?isEqualToString:@"周六"])
? ? {
factWeekDay =?6;
? ? }
?returnfactWeekDay;
}