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

相关文章

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、