zoukankan      html  css  js  c++  java
  • IOS 日期的简洁格式展示

    首先我要解释一下标题的意义,日期的简洁格式展示,之所以简介,是因为让人一目了然,不需要思考是什么时候。

    在详细一点就是我们在微信朋友圈中 所看到的时间格式。

    例如:刚刚 -几分钟前-几小时前等等。

    今天这里带来的是一个简单的类别。

    方便实用。

    以及简单的实际应用。

    先看看一看类别是什么样子的

    .h

    #import <Foundation/Foundation.h>
    
    @interface NSDate (CXExtension)
    
    -(NSDateComponents *)dateFrom:(NSDate *)from;
    
    -(BOOL)isThisYear;
    -(BOOL)isToday;
    -(BOOL)isYesterday;
    
    @end

    .m

    #import "NSDate+CXExtension.h"
    
    @implementation NSDate (CXExtension)
    
    -(NSDateComponents *)dateFrom:(NSDate *)from{
        //日历
        NSCalendar *calendar = [NSCalendar currentCalendar];
        
        NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
        
        return [calendar components:unit fromDate:from toDate:self options:0 ];
    }
    //判断是否为今年
    -(BOOL)isThisYear{
        
        NSCalendar * calendar = [NSCalendar currentCalendar];
        
        NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];
        NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];
        
        return selfYear == nowYear;
        
    }
    //判读是否为今天
    -(BOOL)isToday{
        
        NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
        
        formatter.dateFormat = @"yyyy-MM-dd";
        
        NSString * nowDate = [formatter stringFromDate:[NSDate date]];
        NSString * selfDate = [formatter stringFromDate:self];
        
        return [nowDate isEqualToString:selfDate];
        
    }
    //判断是否为昨天
    -(BOOL)isYesterday{
        
        NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
        
        formatter.dateFormat = @"yyyy-MM-dd";
        
        NSDate * nowDate = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
        NSDate * selfdate = [formatter dateFromString:[formatter stringFromDate:self]];
        
        NSCalendar * calendar = [NSCalendar currentCalendar];
        
        NSDateComponents * unit = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:selfdate toDate:nowDate options:0];
        return unit.year == 0 && unit.month == 0 && unit.day == 1;
        
    }
    @end

    下面的实力所展现的效果:

    当时间为去年时 显示全部时间格式

    当时间为今年时分为以下情况

    当时间为今天是判断具体时间

    产生几小时前

    几分钟前

    刚刚的显示格式

    当时间为昨天是 显示昨天以及时分秒

    当时间既不是今天又不是昨天时

    显示除年以外的所有时间格式

    -(NSString *)create_time{
        NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        NSDate * creat = [formatter dateFromString:_create_time];
        if (creat.isThisYear) {
            
            if (creat.isToday) {
                
                NSDateComponents * unit = [creat dateFrom:creat];
                if (unit.hour > 1) {
                    return [NSString stringWithFormat:@"%zd小时前",unit.hour];
                }else if (unit.minute > 1){
                    return [NSString stringWithFormat:@"%zd分钟前",unit.minute];
                }else{
                    return @"刚刚";
                }
            }else if (creat.isYesterday){
                formatter.dateFormat = @"昨天 HH:mm:ss";
                return[formatter stringFromDate:creat];
            }else{
                formatter.dateFormat = @"MM-dd HH:mm:ss";
                return [formatter stringFromDate:creat];
            }
        }
        else{
            return[formatter stringFromDate:creat];
        }
    }
  • 相关阅读:
    异常
    动态链接库与静态链接库的区别
    OpenBLAS 安装与使用
    Eigen 优化技巧
    C++读取保存为二进制的 numpy 数组
    Sublime Text Windows版使用Conda环境
    Repeater 时间格式化
    C#与js的各种交互
    js 实现精确加减乘除
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5327365.html
Copyright © 2011-2022 走看看