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;
    }
}
从接线到组态:手把手教你搞定PROFIBUS-DP与PA的混合网络搭建(基于西门子TIA Portal) 本文详细介绍了PROFIBUS-DP与PA混合网络的搭建方法,基于西门子TIA Portal平台,从硬件选型、网络架构设计到组态配置和现场调试,提供了一套完整的实战指南。重点解析了DP/PA耦合器的使用、地址映射策略及网络诊断技巧,帮助工程师高效构建高可靠性的工业自动化网络。 阅读详情

相关推荐

DSP TMS320C6657中FFT函数的调用与具体使用方法

首先明确一点,C6678中FFT的函数形式为: N : length of FFT in complex samples ptr_x : pointer to complex data input ptr_w : pointer to complex twiddle factor ptr_y : pointer to complex output data brev : pointer to bit reverse table containing 64 entries n_min : should be

Kayboy的博客 3011

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

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

张三的博客,As a Developer 523

【HAL库-STM】智能温控按键小风扇【胎教级教学】

硬件设备:DHT11,0.96寸oled屏,二/三/四线风扇(不挑),面包板 、f10的精英板等等。当人在的风扇面前时可以自行控制风扇,不在面前时又想开风扇就让他温控自行开启,(在这里有一个想法就是加上蓝牙和wifi控制的功能能够远程遥控,这个如果做的再全一点就要自主研发是一个多功能app,这里没有做。针对这个dht11,我一开始是卡在了这个check函数里面,一直是我给完dht11低电平和高电平后,dht11不回复我低电平和高电平,这个不是我的问题,当时代码是没毛病的,这个点一直卡着我。吐血五天实现小成品

weixin_52451652的博客 1738

【iOS】NSDate分类,获得中国农历

1.说明: 参考网上代码写的一个分类,只需一句代码就可得到NSDate对象所对应的中国农历、星期。 2.使用方法: (1)导入分类头文件: #import "NSDate+ChineseDate.h" (2)NSDate对象调用获取农历方法: [picker.date getChineseCalendar] 3.在实际项目中的效果: 4.简单Demo源码:h

dolacmeng的专栏 1969

专题一:Labview表格控件 及 应用(三)在表格中插入一行数据

专题一:Labview表格控件 及 应用(三) 在表格中插入一行数据 最近一段时间,做试验台上位机编程,老是用到表格控件,这几天抽时间专门写一个表格控件的专题。有用到的朋友可以参考一下。 今天接着讲一下,表格控件的数据插入,和相关的操作 1.表格控件的数据插入原理: 表格控件是一个 2D 字符串数组。 在表格插入一行,就是在2D数组插入一行。 行、列插入类似** 以下以成绩录入为例说明 2.1 不要表头直接插入 知识点1:创建数组:把数学,语文,英语三个数值,连成一个一位数组(数值型)。 知

Labview十年工控_702老师的博客 1万+

基于YOLOv5与海康工业相机的高分辨率实时检测实践

本文详细介绍了基于YOLOv5与海康工业相机的高分辨率实时检测实践,通过优化相机配置、网络传输和YOLOv5模型适配,实现了每秒15帧以上的实时检测性能,缺陷识别准确率高达99.2%。特别适用于电子元件焊接点检测、精密齿轮齿痕检查等对微小缺陷敏感的场景。

weixin_30872499的博客 474

NSDate类以及category

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

xiaomeng_os的专栏 642

深入解析luckyExcel处理xlsx与xls文件的实战技巧

本文深入解析了使用luckyExcel库在前端处理.xlsx与.xls文件的实战技巧。针对.xlsx文件,可直接调用API转换;对于老旧的.xls格式,则需结合SheetJS进行预处理。文章详细介绍了核心API的使用、两种格式的处理流程、数据提取方法以及性能优化建议,为开发在线Excel编辑应用提供了完整解决方案。

cherry的博客 817

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

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

weixin_34348805的博客 422

【软路由】旁路由使用配置教程

【软路由】旁路由使用配置教程简介旁路由好处旁路由配置步骤1、修改管理地址网段 简介 我们都知道,软路由一般有两种使用方式,一种是作为承担DHCP分配的主路由,而另一种就是作为不承担DHCP分配功能的旁路由使用。今天就来介绍如何将软路由配置成为旁路由。 旁路由好处 旁路由最大的好处就是它不承担DHCP分配任务,这意味着它的对网络的影响极小。即使突然故障也不会导致整个网络瘫痪。更别提软路由的配置复杂,用户可能还经常修改上面的网络配置,一旦出错就是整个网络瘫痪,如果家中还有其他人使用网络,影响实在是不好。 建议有

博客 4万+

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章:ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-优快云博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-优快云博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。

RXXW_Dor的博客 2282

Objective -C NSDate、Category   、Extension、Protocol

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

weixin_33675507的博客 126

R语言生存分析之竞争风险模型

R语言生存分析之竞争风险模型 竞争风险模型(Competing Risk Model)是一种处理多种潜在结局生存数据的分析方法,早在1999年Fine和Gray就提出了部分分布的半参数比例风险模型,通常使用的终点指标是累积发生率函数(cumulative incidence function,CIF)。 研究中结局事件可能有多个,某些结局将阻止感兴趣事件的出现或影响其发生的概率,各结局事件形成“竞争”关系,互为竞争风险事件。 竞争风险模型( Competing Risk Model ) : 指

data+scenario+science+insight 5247

类的扩展

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

爱日莲(qin1253409131)的博客 316

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OC (七)

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

Ideainnet 739

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Objective - c 7.类的扩展

本讲主要内容 zhang

Unc1eWang的专栏 550

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

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

czh880410的博客 1013

Category简介 (上篇)

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

weixin_34007291的博客 162

iOS面试题(二)

1.self.和self的区别?id,nil代表什么?

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值