iOS 时间对比,判断几分钟前、几小时前、昨天、本周几

iOS 时间对比,判断几分钟前、几小时前、昨天、本周几


/*

 * 需要传入的时间格式 2017-06-14 14:18:54

 */

// 和当前时间进行比较  输出字符串为(刚刚几个小时前 几天前 )

+(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小时内可能是昨天

            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;

}

//把时间字符串转换成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;

}

//把时间转换成星期

+ (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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • iOS UIImage 压缩 剪切 /* * 需要传入的时间格式 2017-06-14 14:18:54 */ /...
    XWSxws阅读 198评论 0 0
  • .h文件 #import #define D_MINUTE60 #define D_HOUR3600 #defin...
    屈涯阅读 586评论 2 0
  • 2018.3.27.二月十一星期二复盘Days111章孝萍 今日分享关键词,麦霸 下午两点多钟我又有了一...
    章孝萍阅读 115评论 0 0
  • MeetingMinutes The 446thMeeting: Competition Opening Afte...
    Rutona阅读 340评论 0 0
  • 文章介绍 在上一篇博文中,我讲述了利用Python的selenium模块抓取动态数据的方法点击打开链接,那么这些抓...
    westolife阅读 258评论 0 0