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

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方