日期处理一之NSLalendar的使用

一、日期和时间模式

1
2
3
日期和时间格式由日期和时间模式字符串组成,在日期和时间模式字符串中未加引号的'A'到‘Z’和'a'到‘z’被解释为模式字母,用来表示日期或时间。
    字符串元素,文本可以使用单引号(‘’)引起来使用。
    定义以下模式字母(所有其他字符‘A’到‘Z’,'a'到‘z’都被保留)   

二、日期格式化

1
2
1、  yyyy-MM-dd HH:mm:ss     2014-12-12 12:12:12
2、  yyyy/MM/dd HH:mm:ss     2014/12/12 12:12:12

三、思维导图

四、事例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
xzr_formatter  是自定义的静态formatter类
//是今年
- (BOOL)xzr_isToYear{
 
    NSCalendar *calendar = [NSCalendar xzr_calendar];
    NSCalendarUnit unit = NSCalendarUnitYear;
    NSDateComponents *selfComponents = [calendar components:unit fromDate:计算的日期];
    NSDateComponents *nowComponents = [calendar components:unit fromDate:[NSDate date]];
    //年都一样
    return (selfComponents.year == nowComponents.year);
}
//是今天
- (BOOL)xzr_isToday{
    NSCalendar *calendar = [NSCalendar xzr_calendar];  // 自定义方法获取日历类对象
    NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay; //计算的日期,如年,月,日
    NSDateComponents *selfComponents = [calendar components:unit fromDate:计算的日期];
    NSDateComponents *nowComponents = [calendar components:unit fromDate:[NSDate date]];//现在日期
    return (selfComponents.year == nowComponents.year && selfComponents.month == nowComponents.month && selfComponents.day == nowComponents.day);
}
//判断日期处理
+ (NSString *)xzr_dateString:(NSString *)string{
    //日期格式
    xzr_formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *createDate = [xzr_formatter dateFromString:string] ;
    if (createDate.xzr_isToYear) {//是今年
        if (createDate.xzr_isToday) {//今天
            NSDate *nowDate = [NSDate date];
            NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
            NSDateComponents *components = [xzr_calendar components:unit fromDate:createDate toDate:nowDate options:NSCalendarWrapComponents ];
            if (components.hour >= 1) {//几小时前
                return [NSString stringWithFormat:@"%ld小时前",components.hour];
            }else if (components.minute >=1){//几分钟前
                return [NSString stringWithFormat:@"%ld分钟前",components.minute];
            }else{//刚刚
                return @"刚刚";
            }
        }else if (createDate.xzr_isToYestoday){//昨天
            xzr_formatter.dateFormat = @"昨天 HH:mm:ss";
            return [xzr_formatter stringFromDate:createDate];
        }else{
            xzr_formatter.dateFormat = @"MM-dd HH:mm:ss";
            return [xzr_formatter stringFromDate:createDate];
        }
    }else{
        return string;
 
    }
}

 

posted @   TheYouth  阅读(249)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-03-23 AFN 处理网络哪些事(轻松掌握AFN网络顶级框架)
点击右上角即可分享
微信分享提示