NSDate分类-日期格式化以及日期常用判断

2023-12-19 12:58

本文主要是介绍NSDate分类-日期格式化以及日期常用判断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • NSDate+LC.h
@interface NSDate (LC)/// 是否为今天
- (BOOL)isToday;/// 是否为昨天
- (BOOL)isYesterday;/// 是否为今年
- (BOOL)isThisYear;/// 返回年月日
- (NSDate *)dateWithYMD;/// 获得与当前时间的差距
- (NSDateComponents *)deltaWithNow;/// 返回日期字符串
- (NSString *)dateString;
@end
  • NSDate+LC.m
#import "NSDate+LC.h"@implementation NSDate (LC)/// 是否为今天
- (BOOL)isToday
{NSCalendar *calendar = [NSCalendar currentCalendar];int unit = NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear;// 1.获得当前时间的年月日NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];// 2.获得self的年月日NSDateComponents *selfCmps = [calendar components:unit fromDate:self];return(selfCmps.year == nowCmps.year) &&(selfCmps.month == nowCmps.month) &&(selfCmps.day == nowCmps.day);
}
- (BOOL)isYesterday
{NSDate *nowDate = [[NSDate date] dateWithYMD];NSDate *selfDate = [self dateWithYMD];// 获得nowDate和selfDate的差距NSCalendar *calendar = [NSCalendar currentCalendar];NSDateComponents *cmps = [calendar components:NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];return cmps.day == 1;
}/// 返回年月日
- (NSDate *)dateWithYMD
{NSDateFormatter *fmt = [[NSDateFormatter alloc] init];fmt.dateFormat = @"yyyy-MM-dd";NSString *selfStr = [fmt stringFromDate:self];return [fmt dateFromString:selfStr];
}/// 是否为今年
- (BOOL)isThisYear
{NSCalendar *calendar = [NSCalendar currentCalendar];int unit = NSCalendarUnitYear;// 1.获得当前时间的年月日NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];// 2.获得self的年月日NSDateComponents *selfCmps = [calendar components:unit fromDate:self];return nowCmps.year == selfCmps.year;
}- (NSDateComponents *)deltaWithNow
{NSCalendar *calendar = [NSCalendar currentCalendar];int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];
}
- (NSString *)dateString
{NSDateFormatter *fmt = [[NSDateFormatter alloc] init];//判断时间 和 现在时间 的差距if (self.isToday) { // 今天if (self.deltaWithNow.hour >= 1) {return [NSString stringWithFormat:@"%d小时前", (int)self.deltaWithNow.hour];} else if (self.deltaWithNow.minute >= 1) {return [NSString stringWithFormat:@"%d分钟前", (int)self.deltaWithNow.minute];} else {return @"刚刚";}} else if (self.isYesterday) { // 昨天fmt.dateFormat = @"昨天 HH:mm";return [fmt stringFromDate:self];} else if (self.isThisYear) { // 今年(至少是前天)fmt.dateFormat = @"MM-dd HH:mm";return [fmt stringFromDate:self];} else { // 非今年fmt.dateFormat = @"yyyy-MM-dd HH:mm";return [fmt stringFromDate:self];}
}
@end

这篇关于NSDate分类-日期格式化以及日期常用判断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512249

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Java日期类详解(最新推荐)

《Java日期类详解(最新推荐)》早期版本主要使用java.util.Date、java.util.Calendar等类,Java8及以后引入了新的日期和时间API(JSR310),包含在ja... 目录旧的日期时间API新的日期时间 API(Java 8+)获取时间戳时间计算与其他日期时间类型的转换Dur

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代