ios日期-今天,昨天,星期几,仿微信

我们以微信聊天为例,在消息界面的右上方有时间,当天显示时间,以及昨天,星期几,这些情况。以及其他的一些聊天软件里面有多少秒之前,几分钟之前这样的。
然后在网上找了半天,没有完全符合。想拿过来改改,改了一下感觉非常费事,然后就自己写了。最后发现还是下面代码写法最通用。

代码没什么难度,修改也很方便,主要是逻辑简单,方便使用。不管你有什么日期比较需求,下面的写法绝对可以提供最多的功能。

1.将所有年月日时分秒提取出来,方便大家做比较.
- (NSString *)formateDate:(NSDate *)originDate
{
    
    @try {
        NSString *dateStr = nil;
        // ------实例化一个NSDateFormatter对象
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//这里的格式必须和DateString格式一致
        NSDate * nowDate = [NSDate date];
        
        // ------将需要转换的时间转换成 NSDate 对象
        
        NSString *originDateStr = [dateFormatter stringFromDate:originDate];
        NSString *nowDateStr = [dateFormatter stringFromDate:nowDate];
        // 年
        NSString * yearStr = [originDateStr substringToIndex:4];
        NSString * nowYear = [nowDateStr substringToIndex:4];
        BOOL isSameYear = [yearStr isEqualToString:nowYear];
        // 月
        NSRange monthRange = NSMakeRange(5, 2);
        NSString *monthStr = [originDateStr substringWithRange:monthRange];
        NSString *nowMonth = [nowDateStr substringWithRange:monthRange];
        BOOL isSameMonth = [monthStr isEqualToString:nowMonth];
        // 日
        NSRange dayRange = NSMakeRange(8, 2);
        NSString *dayStr = [originDateStr substringWithRange:dayRange];
        NSString *nowDay = [nowDateStr substringWithRange:dayRange];
        BOOL isSameDay = [dayStr isEqualToString:nowDay];
        int dayValue = nowDay.intValue - dayStr.intValue;// 天数间隔
        // 时
        NSRange hourRange = NSMakeRange(11, 2);
        NSString *hourStr = [originDateStr substringWithRange:hourRange];
        NSString *nowhour = [nowDateStr substringWithRange:hourRange];
        BOOL isSameHour = [hourStr isEqualToString:nowhour];
        // 分
        NSRange minuteRange = NSMakeRange(14, 2);
        NSString *minuteStr = [originDateStr substringWithRange:minuteRange];
        NSString *nowminute = [nowDateStr substringWithRange:minuteRange];
        // 秒
        NSRange secondRange = NSMakeRange(17, 2);
        NSString *secondStr = [originDateStr substringWithRange:secondRange];
        NSString *nowSecond = [nowDateStr substringWithRange:secondRange];
        /***********************需要的时间字符串**********************/
        if (isSameYear) {
            if (isSameMonth) {
                if (isSameDay) {
                   
                }
                
            }
        }
    } @catch (NSException *exception) {
        return @"";
    } @finally {
        return @"";
    }
}
2.方便需要用到显示星期几的
 
- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
    
    NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期天", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];
    
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    
    NSTimeZone *timeZone = [[NSTimeZone alloc] init];
    
    [calendar setTimeZone: timeZone];
    
    NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
    
    NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];
    
    return [weekdays objectAtIndex:theComponents.weekday];
    
}

3.总结

总体来说并不推荐大家在iOS设备中进行转换,大量的tableviewcell需要时间创建转换,是比较好性能的. 最好让后台处理

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,834评论 25 707
  • 当前 1整理好所有要报销的物品1.5 1服装 2彩球 3住宿费,餐费 4买披肩和印彩 5化妆品 6理发,出租车费用...
    迪秋1阅读 153评论 0 0
  • 熟悉我的人都知道,我是颜控。 熟悉我的人都知道,我是颜控。在众多养眼的面孔中,其实翻来覆去我就喜欢那么几个人,这么...
    红豆汉堡阅读 952评论 9 11