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

相关文章

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

springboot日期格式化全局LocalDateTime详解

《springboot日期格式化全局LocalDateTime详解》文章主要分析了SpringBoot中ObjectMapper对象的序列化和反序列化过程,并具体探讨了日期格式化问题,通过分析Spri... 目录分析ObjectMapper与jsonSerializer结论自定义日期格式(全局)扩展利用配置

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过