iOS - 时间处理集锦

各位大佬好,最近刚完成了一个项目终于有时间来整理下这些东西了,废话不多说,直接上代码吧。

时间处理函数

//1.和时间戳进行比较,转换成(如:3天前)
+ (NSString *)changeTimeShow:(long long)str;

//2.和当前真实时间进行比较
//参数传入的是固定时间格式(yyyy-MM-dd HH:mm)字符串转换成显示字符串(如:"2017-02-26 24:40" 转换成 "3个月前")
//str: yyyy-MM-dd HH:mm
+ (NSString *)changeTimeShowWithNowData:(NSString *)str;

//3.获取当前真实时间
+ (NSString *)getNowDate;//@"YYYY-MM-dd hh:mm:ss"

//4.获得当前时间戳
+ (NSString *)GetCurrentTimeString;

//5.时间戳转时间(真实时间)
+ (NSString *)GetTimeIncludeYear:(long long)TimeInteger;

具体代码

1.和时间戳进行比较

//1.和时间戳进行比较
+ (NSString *)changeTimeShow:(long long)time{
    //获取当前时间戳
    NSTimeInterval a=[[NSDate date] timeIntervalSince1970]; //*1000; // *1000 是精确到毫秒,不乘就是精确到秒
    NSString *returnStr;
    a = (NSInteger)a;
    NSInteger cNum;
    if (time == a) {
        
        returnStr = @"刚刚";
        
    }else if (time > a){
        
        cNum = time - a;
        if (cNum/(30 *24 *60 *60) > 0) {//一个月
            returnStr = [NSString stringWithFormat:@"%ld月后",cNum/(30 *24 *60 *60)];
        }else{
            if (cNum/(24 *60 *60) > 0) {//一天
                returnStr = [NSString stringWithFormat:@"%ld天后",cNum/(24 *60 *60)];
            }else{
                if (cNum/(60 *60) > 0) {
                    returnStr = [NSString stringWithFormat:@"%ld小时后",cNum/(60 *60)];
                }else{
                    if (cNum/60 > 0) {
                        returnStr = [NSString stringWithFormat:@"%ld分钟后",cNum/(60)];
                    }else{
                        returnStr = [NSString stringWithFormat:@"%ld秒后",cNum];
                    }
                }
            }
        }
        
    }else if (time < a){
        cNum = a - time;
        if (cNum/(30 *24 *60 *60) > 0) {//一个月
            returnStr = [NSString stringWithFormat:@"%ld月前",cNum/(30 *24 *60 *60)];
        }else{
            if (cNum/(24 *60 *60) > 0) {//一天
                returnStr = [NSString stringWithFormat:@"%ld天前",cNum/(24 *60 *60)];
            }else{
                if (cNum/(60 *60) > 0) {
                    returnStr = [NSString stringWithFormat:@"%ld小时前",cNum/(60 *60)];
                }else{
                    if (cNum/60 > 0) {
                        returnStr = [NSString stringWithFormat:@"%ld分钟前",cNum/(60)];
                    }else{
                        returnStr = [NSString stringWithFormat:@"%ld秒前",cNum];
                    }
                }
            }
        }
    }
    return returnStr;
}

2.和当前真实时间进行比较

//2.和当前真实时间进行比较
+ (NSString *)changeTimeShowWithNowData:(NSString *)str{
    //获取当前时间
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    NSString *DateTime = [formatter stringFromDate:date];
    
    //
//    NSString *string =@"123456d890";
//    NSString *str1 = [string substringToIndex:5];//截取掉下标6之前不包括6的字符串
//    NSLog(@"截取的值为:%@",str1);//12345
//    NSString *str2 = [string substringFromIndex:3];//截取掉下标4之后包括4的字符串
//    NSLog(@"截取的值为:%@",str2);//456d890
//    NSRange range = [string rangeOfString:@"5"];//匹配得到的下标
//    NSLog(@"rang:%@",NSStringFromRange(range));//4,1

    NSString *yearNow = [DateTime substringToIndex:4];
    NSString *monNow = [DateTime substringToIndex:7];
    monNow = [monNow substringFromIndex:5];
    NSString *dayNow = [DateTime substringToIndex:10];
    dayNow = [dayNow substringFromIndex:8];
    NSString *hourNow = [DateTime substringToIndex:13];
    hourNow = [hourNow substringFromIndex:11];
    NSString *minNow = [DateTime substringFromIndex:14];
    minNow = [minNow substringToIndex:2];
    
    NSString *year = [str substringToIndex:4];
    NSString *mon = [str substringToIndex:7];
    mon = [mon substringFromIndex:5];
    NSString *day = [str substringToIndex:10];
    day = [day substringFromIndex:8];
    NSString *hour = [str substringToIndex:13];
    hour = [hour substringFromIndex:11];
    NSString *min = [str substringFromIndex:14];
    min = [min substringToIndex:2];
    
    NSString *StrReturn;
    
    if ([yearNow integerValue] == [year integerValue]) {
        
        if ([monNow integerValue] == [mon integerValue]) {
            
            if ([dayNow integerValue] == [day integerValue]) {
                
                if ([hourNow integerValue] == [hour integerValue]) {
                    
                    if ([minNow integerValue] == [min integerValue]) {
                        StrReturn = [NSString stringWithFormat:@"刚刚"];
                    }else if ([minNow integerValue] > [min integerValue]){
                        StrReturn = [NSString stringWithFormat:@"%ld分钟前",[minNow integerValue]-[min integerValue]];
                    }else if ([minNow integerValue] < [min integerValue]){
                        StrReturn = [NSString stringWithFormat:@"%ld分钟后",[min integerValue]-[minNow integerValue]];
                    }
                    
                }else if ([hourNow integerValue] > [hour integerValue]){
                    StrReturn = [NSString stringWithFormat:@"%ld小时前",[hourNow integerValue]-[hour integerValue]];
                }else if ([hourNow integerValue] < [hour integerValue]){
                    StrReturn = [NSString stringWithFormat:@"%ld小时后",[hour integerValue]-[hourNow integerValue]];
                }
                
            }else if ([dayNow integerValue] > [day integerValue]){
                StrReturn = [NSString stringWithFormat:@"%ld天前",[dayNow integerValue]-[day integerValue]];
            }else if ([dayNow integerValue] < [day integerValue]){
                StrReturn = [NSString stringWithFormat:@"%ld天后",[day integerValue]-[dayNow integerValue]];
            }
            
        }else if ([monNow integerValue] > [mon integerValue]){
            StrReturn = [NSString stringWithFormat:@"%ld年前",[monNow integerValue]-[mon integerValue]];
        }else if ([monNow integerValue] < [mon integerValue]){
            StrReturn = [NSString stringWithFormat:@"%ld月后",[mon integerValue]-[monNow integerValue]];
        }
        
    }else if ([yearNow integerValue] > [year integerValue]){
        StrReturn = [NSString stringWithFormat:@"%ld年前",[yearNow integerValue]-[year integerValue]];
    }else if ([yearNow integerValue] < [year integerValue]){
        StrReturn = [NSString stringWithFormat:@"%ld年后",[year integerValue]-[yearNow integerValue]];
    }
    return StrReturn;
}

3.获取当前真实时间

//3.获取当前真实时间
+(NSString *)getNowDate{
    //获取当前时间
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];//hh和HH是不一样的HH表示24小时制hh表示12小时
    NSString *DateTime = [formatter stringFromDate:date];
    return DateTime;
}

4.获得当前时间戳

//4.获得当前时间戳
+ (NSString *)GetCurrentTimeString{
    
    NSTimeInterval a=[[NSDate date] timeIntervalSince1970]; //*1000; // *1000 是精确到毫秒,不乘就是精确到秒
    NSString *timeString = [NSString stringWithFormat:@"%.0f", a]; //转为字符型
    
    return timeString;
}

5.时间戳转时间(真实时间)

//5.时间戳转时间(真实时间)
+ (NSString *)GetTimeIncludeYear:(long long)TimeInteger{
    NSLog(@"%ld",TimeInteger);
    long long time = TimeInteger/1000;
    NSLog(@"%ld",time);
    NSDate *TimeDate = [NSDate dateWithTimeIntervalSince1970:time];
    
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    
    //----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
    
    
    NSString *timeString = [formatter stringFromDate:TimeDate];
    
    NSLog(@"timeString-%@",timeString);
    
    return timeString;
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • 酒干倘卖无 酒干倘卖无 酒干倘卖无 酒干倘卖无 多么熟悉的声音 陪我多少年风和雨 从来不需要想起 永远也不会忘记 ...
    菲尔2017阅读 411评论 0 1
  • 事实上,让Mycroft搞不定的人与事几乎没有。 当然,除了Sherlock,他的同胞弟弟。相比之下的一切公文都是...
    哦没有能用的了阅读 229评论 0 0
  • 原以为是到了成家的年纪 才想要寻一女子安身立命 辗转反侧 寤寐求之 直至今日你笑着小跑过去 挥手的我红着脸如醉如痴...
    DeanClowly阅读 234评论 0 1