zoukankan      html  css  js  c++  java
  • 时间格式

    /**

     1.今年

     1> 今天

     * 1分内: 刚刚

     * 1分~59分内:xx分钟前

     * 大于60分钟:xx小时前

     2> 昨天

     * 昨天 xx:xx

     3> 其他

     * xx-xx xx:xx

     2.非今年

     1> xxxx-xx-xx xx:xx

     */

    -(NSString *)createtime{

        NSDateFormatter *format = [[NSDateFormatter alloc] init];

        format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

        

        NSDate *CreateDate = [format dateFromString:_createtime];

        

        // 现在时间

        NSDate *now = [NSDate date];

        

        NSCalendar *calendar = [NSCalendar currentCalendar];

        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

        // 计算两个日期之间的差值

        NSDateComponents *cmps = [calendar components:unit fromDate:CreateDate toDate:now options:0];

        

        if ([self isThisYear:CreateDate]) {  // 今年

            if ([self isYesterday:CreateDate]) {  // 昨天

                format.dateFormat = @"昨天 HH:mm";

                return [format stringFromDate:CreateDate];

            }else if([self isToday:CreateDate]){  // 今天

                if (cmps.hour >= 1) {  // xx小时前

                    return [NSString stringWithFormat:@"%d小时前",(int)cmps.hour];

                }else if(cmps.minute >= 1){  // 信息分钟前

                    return [NSString stringWithFormat:@"%d分钟前",(int)cmps.minute];

                }else{// 刚刚

                    return @"刚刚";

                }

            }else{// 今年的其他日子

                format.dateFormat = @"MM-dd HH:mm";

                return [format stringFromDate:CreateDate];

            }

        }else{// 非今年

            format.dateFormat = @"yyyy-MM-dd HH:mm";

            return [format stringFromDate:CreateDate];

        }

        

        return _createtime;

    }

    - (BOOL)isThisYear:(NSDate *)date{

        

        NSCalendar *calendar = [NSCalendar currentCalendar];

        

        NSDateComponents *createDate = [calendar components:NSCalendarUnitYear fromDate:date];

        NSDateComponents *currentDate = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];

        

        return createDate.year == currentDate.year;

    }

    - (BOOL)isYesterday:(NSDate *)date{

        

        NSDate *now = [NSDate date];

        

        NSDateFormatter *format = [[NSDateFormatter alloc] init];

        format.dateFormat = @"yyyy-MM-dd";

        

        //将时间转换为字符串(去掉时分秒)

        NSString *createStr = [format stringFromDate:date];

        NSString *currentStr = [format stringFromDate:now];

        

        // 将时间字符串转化为NSDate

        date = [format dateFromString:createStr];

        now = [format dateFromString:currentStr];

        

        NSCalendar *calendar = [NSCalendar currentCalendar];

        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

        // 计算两个日期之间的差值

        NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];

        

        return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;

    }

    - (BOOL)isToday:(NSDate *)date{

        

        NSDate *now = [NSDate date];

        

        NSDateFormatter *format = [[NSDateFormatter alloc] init];

        format.dateFormat = @"yyyy-MM-dd";

        

        //将时间转换为字符串(去掉时分秒)

        NSString *createStr = [format stringFromDate:date];

        NSString *currentStr = [format stringFromDate:now];

        

        return [createStr isEqualToString:currentStr];

    }

  • 相关阅读:
    深入剖析RocketMQ源码-NameServer
    Percolator模型及其在TiKV中的实现
    源码解读Dubbo分层设计思想
    vivo营销自动化技术解密|开篇
    Node.js 应用全链路追踪技术——[全链路信息获取]
    Linux系统 usermod -a -G 不重启 立即生效
    安装Docker和Docker-Compose工具
    linux 启动停止jar
    check_ffmpeg_status
    shell 的字符完全匹配
  • 原文地址:https://www.cnblogs.com/jiqiaochun/p/5121060.html
Copyright © 2011-2022 走看看