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];

    }

  • 相关阅读:
    计算JensenShannon Divergence距离的方法
    perl 取出正则表达式的匹配位置
    QQ客服左右提示
    JS获取DropDownList的value值与text值
    一个大文件上传组件RadUpLoad(带进度条时间显示)
    asp.net不同后辍名的文件
    RowDataBound事件 .
    当sql2000和sql2005同时装时,因为都用了1433的端口号,可能会导致连接失败,这里讲asp.net 的连接方法 .
    CSS圆角
    ASP.NET把图片存入数据库和使用文件流读取显示(转)
  • 原文地址:https://www.cnblogs.com/jiqiaochun/p/5121060.html
Copyright © 2011-2022 走看看