iOS 之NSDate的Category

iOS学习笔记2(结合项目)--Category和Extension的区别 Category实例 /** * 判断某个时间是否为今天 */ -(BOOL)isToday; /** * 判断某个时间是否为昨天 */ -(BOOL)isYesterday; /** * 判断某个时间是否为今年 */ -(BOOL)isYear; /** * 将某个时间格式化为yyyy-MM-dd */ -(NSDate *)dateWithYMD; /** * 计算某个时间与当前时间的时间差 */ -(NSDateComponents *)deltaWithNow; 立即下载

iOS 之NSDate的Category

判断日期是是否是今年?今天?
NSDate+Extension.h
#import <Foundation/Foundation.h>
@interface NSDate (Extension)

//比较from和self的时间差值
- (NSDateComponents *)deltaFrom:(NSDate *)from;

 //是否为今年
- (BOOL)isThisYear;

//是否为今天
- (BOOL)isToday;

//是否为昨天
- (BOOL)isYesterday;

//是否为明天
- (BOOL)isTomorrow;

@end
NSDate+Extension.m
#import "NSDate+Extension.h"

@implementation NSDate (Extension)
- (NSDateComponents *)deltaFrom:(NSDate *)from
{
    // 日历
    NSCalendar *calendar = [NSCalendar currentCalendar];

    // 比较时间
    NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | 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 nowYear == selfYear;
}


- (BOOL)isToday
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";

    NSString *nowString = [fmt stringFromDate:[NSDate date]];
    NSString *selfString = [fmt stringFromDate:self];

    return [nowString isEqualToString:selfString];
}

- (BOOL)isYesterday
{
    // 2014-12-31 23:59:59 -> 2014-12-31
    // 2015-01-01 00:00:01 -> 2015-01-01

    // 日期格式化类
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";

    NSDate *nowDate = [fmt dateFromString:[fmt stringFromDate:[NSDate date]]];
    NSDate *selfDate = [fmt dateFromString:[fmt stringFromDate:self]];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *cmps = [calendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:selfDate toDate:nowDate options:0];

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

- (BOOL)isTomorrow{
     NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";

    NSDate *nowDate = [fmt dateFromString:[fmt stringFromDate:[NSDate date]]];
    NSDate *selfDate = [fmt dateFromString:[fmt stringFromDate:self]];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *cmps = [calendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:nowDate toDate:selfDate options:0];

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

}
@end

简单使用TopicModel

#import “TopicModel.m”文件中
- (NSString *)create_time
{
    // 日期格式化类
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 设置日期格式(y:年,M:月,d:日,H:时,m:分,s:秒)
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // 帖子的创建时间
    NSDate *create = [fmt dateFromString:_create_time];

    if (create.isThisYear) { // 今年
        if (create.isToday) { // 今天
            NSDateComponents *cmps = [[NSDate date] deltaFrom:create];

            if (cmps.hour >= 1) { // 时间差距 >= 1小时
                return [NSString stringWithFormat:@"%zd小时前", cmps.hour];
            } else if (cmps.minute >= 1) { // 1小时 > 时间差距 >= 1分钟
                return [NSString stringWithFormat:@"%zd分钟前", cmps.minute];
            } else { // 1分钟 > 时间差距
                return @"刚刚";
            }
        } else if (create.isYesterday) { // 昨天
            fmt.dateFormat = @"昨天 HH:mm:ss";
            return [fmt stringFromDate:create];
        } else if(creat.isTomorrow){
            fmt.dateFormat = @"明天 HH:mm:ss";
            return [fmt stringFromDate:create];
        }else { // 其他
            fmt.dateFormat = @"MM-dd HH:mm:ss";
            return [fmt stringFromDate:create];
        }
    } else { // 非今年
        return _create_time;
    }
}
eNSP-抓包解析TCP三次握手和四次挥手的过程 一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果 阅读详情

相关推荐

遥感目标检测数据集汇总

文章目录1. 光学数据集1.1 DIOR1.2 LEVIR1.3 DOTA1.4 RSOD1.5 NWPU VHR-101.6 VEDAI1.7 COWC1.8 ITCVD1.9 DIUx xView 20181.10 HRSC20161.11 TAS1.12 SZTAKI‐INRIA1.13 UCAS AOD1.14 DLR 3K Vehicle2. SAR2.1 SSDD2.2 SSDD+2....

quanwei的博客 6万+

NSDate添加常用Category,用于得到是否是今天,昨天等

NSDate添加常用Category,用于得到是否是今天,昨天等

张三的博客,As a Developer 523

Figma汉化教程

Figma汉化教程

cc蒲公英的博客 1万+

oc NSDate / Category类目 / 延展

#import #import "NSString+sayHi.h" #import "NSDate+dateWithString.h" #import "person.h" #import "Girl.h" #import "Boy.h" #import "Man.h" #import "NSObject+CategoryTrain.h" int main(int argc

bellazhouyi的专栏 409

ubuntu emto-cpa安装与编译

ubuntu emto-cpa安装与编译

qq_45834835的博客 1435

Allegro 给元器件PCB封装库添加3D模型详细步骤

从上面视图可以看到模型跟PCB 库的方向是对了,但是位置偏下,且在PCB封装库后面,我们下面需要做的就是把模型往上移、往前移。首先将元器件3D模型文件放在封装库的目录下(也可以单独新建一个模型库文件夹),注意3D文件必须是Step格式。Transparent: 选择透视的对象,可以是模型、也可以是PCB封装,或者两种都透视。在左边搜索要添加的3D模型的文件(注意是在* 星号前面输入文件名),按回车即可找到。同样的,接下来需要往Y 负方向移,即左移,一边调整一边观察视图。

sinat_15677011的博客 3679

OC语言NSDate的使用以及类的扩展

今天的课程的主要内容是关于NSDate、Category、Extension的使用 一、NSDate NSDate是用于处理日期和时间的基础类,封装了某一给定的时刻。 NSDate *nowtime = [ NSDate date ]; //获取系统当前时间 NSLog(@"当前时间是%@",nowtime); 注意获取系统当前时间是格林尼治时间,也就是0时区的时间和日期。北京是

guo41142161994的博客 661

二十一、SAP-库存管理

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1808

高可靠C++开发:JSF编码规范与工具链落地实践

C++编码规范是保障高可靠软件质量的基础工具之一,而源自军工领域的JSF规则正是其中最具代表性的体系。它通过禁用异常、RTTI与动态内存分配等高风险特性,将C++的自由语法约束为可预测、可审查的工程语言,配合编译器告警、静态分析与格式化工具的强制落地,形成从编码到CI的完整防线。在嵌入式控制器、车载系统、医疗器械与金融交易等高安全场景中,JSF规范能显著降低缺陷密度并加速代码评审。实际落地时,通过配置GCC/Clang告警、clang-tidy与clang-format,将规则固化进工具链,可形成一套可复制

weixin_34348805的博客 422

YOLOv8/v9轻量化优化:剪枝30%+蒸馏提精,模型体积缩至4MB还能跑Jetson

剪枝:用敏感度分析找到“可牺牲的30%”,不碰核心特征;蒸馏:借大模型的“经验”补回精度,甚至反超原始小模型;量化:针对边缘设备特性优化量化策略,把体积和延迟压到最低。如果你的项目卡在边缘部署(速度慢/体积大),按“剪枝→蒸馏→量化”三步走,90%能在Jetson上跑通30FPS+的实时检测。需要轻量化模型文件(v8s/v9s剪枝蒸馏后权重)、剪枝工具和Jetson部署脚本的,评论区扣“轻量化”,直接发你可运行版本~

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 669

【PX4学习笔记】1. ROS及PX4环境搭建

环境 Ubuntu18.04 安装教程参考 https://www.guyuehome.com/8983 安装过程中问题的解决 问题1 rosdep init 错误的终极解决方法 注意etc/下的ros和rostep文件夹要自己建 问题2 Ubuntu安装ROS报错 sudo: rosdep:找不到命令 问题3(更好地解决了问题1、2)【推荐】 解决GitHub的raw.githubusercontent.com无法连接问题 问题4:GeographicLib的安装 教程中安装GeographicLib d

【人工智障 | 计算鸡视觉 | 机器孩】 8230

Objective -C NSDate、Category   、Extension、Protocol

NSDate的使用NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区使用+date方法获取当前日期和时间例如 :NSDate*nowDate = [NSDate date];注意,,NSLog(@“%@”,nowDate); 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间NSTimeintervalNSTim...

weixin_33675507的博客 126

Cesium 入门

Viewer:主要窗口Cesium 展示三维要素内容的主要窗口,包含三维地球的视窗,还包含了一些基础控价const viewer = new Cesium.Viewer('div的ID',{ options可选参数 },包括图层)options可选参数animation: false, 隐藏动画效果timeline:false, 隐藏时间轴等等Scene:场景类,隐藏地球图层Entity:实体类。

虎康的博客 3666

类的扩展

1.NSDate(日期) NSDate是cocoa中用于处理日期和时间的基础类,封装了某一给定时间 获取系统当前的时间(获取时间是格林威治的标准时间,也就是0时区的时间和日期;不是北京时间) 北京是东八区,与0时区相差8个小时,1个时区是1个小时。 2.NSTimeInterval: NSTimeInterval是一个用typedef定义的一个新的double类型达的别名,用来表

爱日莲(qin1253409131)的博客 316

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OC (七)

NSDate 和NSDateFormatter NSDate是Cocoa中用于处理日期和时间的基础类,封装了某一给定的时刻,具体日期时间和时区。 无论你是哪个时区的时间,打印时总是打印对应的时区对应的0时区时间。 例如:NSDate *nowDate = [NSDate date]; NSDateFormatter 的使用 NSDateFormatter是iOS中的日期格式类,主要功能是

Ideainnet 739

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Objective - c 7.类的扩展

本讲主要内容 zhang

Unc1eWang的专栏 550

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

7、类的扩展

掌握NSDate的使⽤NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的时刻(含⽇期,时间,时区)。 使⽤+date⽅法获取当前时间例如:NSDate *nowDate = [NSDate date]; NSLog(@“%@”,nowDate); 注意⽆论你是哪个时区的时间,打印时总是打印对应的0时区时间。NSTimeintervaldouble类型 ⽤以表⽰以秒为单位的时间间

DON'T PANIC 432

oc第七天:类的扩展

⼀、掌握NSDate的使⽤ NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的 时刻(含⽇期,时间,时区)。 使⽤+date⽅法获取当前时间 例如:NSDate *nowDate = [NSDate date]; 注意NSLog(@“%@”,nowDate);⽆论你是哪个时区的时间,打印时总 是打印对应的0时区时间。 NSTimeInterval(即dou

luchong的博客 348

iOS开发中时间NSDate几种格式的转换

在开发中经常会遇到和后台进行交互时时间格式的转换。 首先列举几种常见的NSDate的格式: 1 .   20150605234106格式   2.    2015-06-05 15:41:06 +0000格式(正常的输出格式) 3.    1433498400格式(以1970年起到现在的秒数) 第一种格式转换为第二种格式    //第一种时间格式     NSString* st

alarm_clock的博客 2504

OC第七课

主要内容:类的扩展 一、NSDate

辉子的博客 541

iOS判断一个日期是否为昨日、今日、今年

1、需要创建一个NSDate类的category,调用的时候需要传进来一个NSDate类型的时间即可返回BOOL值来判断改时间是不是今日等。 2、直接上干货 创建完分类后,在.h文件中加入下面的代码: #import @interface NSDate (Extension) /**  *  是否为今天  */ - (BOOL)isToday; /**  *  是

iOS-阳哥 7647

终极iOS时间格式化工具:NSDate-TimeAgo支持50+语言的秘密

NSDate-TimeAgo是一款专为iOS开发者打造的终极时间格式化工具,能够轻松实现"刚刚"、"3分钟前"、"昨天"等模糊时间表达方式,同时支持50多种语言的本地化适配,是Objective-C和Swift项目中处理相对时间的理想选择。 ## 🚀 为什么选择NSDate-TimeAgo? 在移动应用开发中,将原始日期转换为用户友好的相对时间(如"2小时前")是提升用户体验的关键细节。NS

gitblog_00776的博客 432

iOS时间那点事--NSDate分类

#iOS 时间那点事 ##NSDate分类(Catogery) ###分类 类,是面向对象语言的基本;类,是具有相同属性和行为的一类事物的概括,这是一种抽象;但是,事物总是多方面的,如此之多以至于我们每每看到深不见底的头文件就恐高,于是乎我们使用了继承,鉴于管理和使用的高额成本,我们创造了“...

cheshu134615564的博客 357

Category简介 (上篇)

概述 你是否有过希望Objective-C核心类可以增加一两个函数的经历呢? Apple考虑到了这些,他们提供了一个不通过继承类的方案。实现的途径就是Category。Category是一种通过添加新函数来提升现有类的途径。这和继承一个类的区别就是在继承的时候你除了可以加入新的函数外还是加入新变量。Category就只能加入新函数。Category的优势就是不需要通...

weixin_34007291的博客 162

ios 获取n个月前或者n个月后的日期

NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange range = [calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]]; NSUInteger numberOfDaysInMonth = range

czh880410的博客 1013

NSDate类以及category

1.创建日期对象 (1) 创建的NSDate对象,获得的永远是0时区的时间,东八区,加8个小时 NSDate *date1 =[NSDate date]; NSLog(@"%@",date1); (2) 创建明天此时的日期,后一天 时间间隔是以秒为单位 NSDate *date2 = [NSDate da

xiaomeng_os的专栏 642
上一篇: iOS之UIMenuController的简单使用
下一篇: Swift函数式编程之Map&Reduce&Filter
ShmimyCoder
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值