iOS NSDate的常用API

2023-11-30 21:01
文章标签 api 常用 ios nsdate

本文主要是介绍iOS NSDate的常用API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、创建日期

1.获取当前时间

2.当前时间指定秒数之后/前的时间

3.指定日期之后/后的时间

4.2001年之后/前指定秒数的时间

5.1970年之后/后指定秒数的时间

二、初始化日期

1.init

2.时间间指定秒数的时间

3.指定时间指定秒数之前/后的时间

4.2001年指定秒数之后/前的时间

三、获取时间边界

1.distantFuture

2.distantPast

四、时间比较

1.比较日期是否相等

2.比较日期是否较早

3.比较日期是否较晚

4.带回调的日期比较的方法

五、获取时间间隔

1.与指定日期的时间间隔

2.距离现在的时间间隔

3.距离2001年的时间间隔

4.距离1970年的时间间隔 

六、时间的运算

总结


前言

     

        本文整理了一下NSDate的API,以便需要或者忘记的时候查询下用法,文章末尾贴出了开发过长中常用的NSDate的拓展方法。

        系统默认NSDate的默认时间为UTC时间。

一、创建日期

1.获取当前时间

+ (instancetype)date;

        这里返回的当前的时间(UTC时间),下面的示例展示了获取当前时间的方法。        

NSDate * todayDate = [NSDate date];
NSLog(@"当前时间:%@",todayDate);

2.当前时间指定秒数之后/前的时间

+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;

        这里返回的时候当前时间之后多少秒的时间。使用负数表示之前多少秒的时间。

NSDate * todayDate = [NSDate date];
NSLog(@"当前时间:%@",todayDate);
NSDate * afterTenSeconds = [NSDate dateWithTimeIntervalSinceNow:10];
NSLog(@"10秒钟之后的时间:%@",afterTenSeconds);
NSDate * beforeTenSeconds = [NSDate dateWithTimeIntervalSinceNow:-10];
NSLog(@"10秒钟之前的时间:%@",beforeTenSeconds);

3.指定日期之后/后的时间

+ (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;

        指定日期多少秒之后的时间,负数表示指定日期多少秒之前的时间。

NSDate * todayDate = [NSDate date];    
NSLog(@"当前时间:%@",todayDate);     
NSDate * afterTenSecondDate = [NSDate dateWithTimeInterval:10 sinceDate:todayDate];        
NSDate * beginTenSecondDate = [NSDate dateWithTimeInterval:-10 sinceDate:todayDate];   
NSLog(@"10秒钟之后的时间:%@",afterTenSecondDate);
NSLog(@"10秒钟之后的时间:%@",beginTenSecondDate);

4.2001年之后/前指定秒数的时间

+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;

        返回从 2001 年 1 月 1 日 00:00:00 UTC 开始的给定秒数之后的时间,负数表示给定秒数之前的时间。

NSDate * todayDate = [NSDate date];
NSLog(@"当前时间:%@",todayDate);
NSDate * tenSecondsAfter2001 = [NSDate dateWithTimeIntervalSinceReferenceDate:10];  
NSLog(@"2001-1-1 00:00:00 之后10秒的时间当前时间:%@",tenSecondsAfter2001);

5.1970年之后/后指定秒数的时间

+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

        返回从 1970 年 1 月 1 日 00:00:00 UTC 开始的给定秒数之后的时间,负数表示给定秒数之前的时间。

NSDate * tenSecondsAfter1970 = [NSDate dateWithTimeIntervalSince1970:10];
NSLog(@"2001-1-1 00:00:00 之后10秒的时间当前时间:%@",tenSecondsAfter1970);

二、初始化日期

1.init

- (instancetype)init;

        这里返回的也是当前的时间

NSDate * nowDate = [[NSDate alloc]init];
NSLog(@"当前时间:%@",nowDate);

2.时间间指定秒数的时间

- (instancetype)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;

NSDate * nowDate = [[NSDate alloc]init];    
NSLog(@"当前时间:%@",nowDate);
NSDate * afterTenSecondsDate = [[NSDate alloc]initWithTimeIntervalSinceNow:10];
NSLog(@"10秒钟之后的时间:%@",afterTenSecondsDate);

3.指定时间指定秒数之前/后的时间

- (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;

NSDate * nowDate = [[NSDate alloc]init];        
NSLog(@"当前时间:%@",nowDate);
NSDate * afterTenSecondsDate = [[NSDate alloc]initWithTimeInterval:10 sinceDate:nowDate];        
NSLog(@"10秒钟之后的时间:%@",afterTenSecondsDate);

4.2001年指定秒数之后/前的时间

- (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;

NSDate * nowDate = [[NSDate alloc]init];        
NSLog(@"当前时间:%@",nowDate);        
NSDate * afterTenSecondsFrom2001 = [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:10];        
NSLog(@"2001年10秒钟之后的时间:%@",afterTenSecondsFrom2001);

5.1970年指定秒数之后/前的时间

- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)secs;

NSDate * nowDate = [[NSDate alloc]init];        
NSLog(@"当前时间:%@",nowDate);        
NSDate * afterTenSecondsFrom1970 = [[NSDate alloc]initWithTimeIntervalSince1970:10];        
NSLog(@"1970年10秒钟之后的时间:%@",afterTenSecondsFrom1970);

三、获取时间边界

1.distantFuture

2.distantPast

四、时间比较

1.比较日期是否相等

- (BOOL)isEqualToDate:(NSDate *)otherDate;

        比较A日期是否和B日期是否相同。相同返回YES,不同返回NO。

NSDate * nowDate = [NSDate now];
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10];
if ([nowDate isEqualToDate:nowDateAfter10Seconds]) {NSLog(@"nowDate == nowDateAfter10Seconds");
} else {NSLog(@"nowDate != nowDateAfter10Seconds");
}
if ([[NSDate now] isEqualToDate:[[NSDate alloc]init]]) {NSLog(@"equal");
}

2.比较日期是否较早

- (NSDate *)earlierDate:(NSDate *)anotherDate;

        比较A日期是否早于B日期,是的话返回YES,否则返回NO。

NSDate * nowDate = [NSDate now];
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10];
if ([nowDate isEarlierThanOrEqualTo:nowDateAfter10Seconds]) {NSLog(@"nowDate isEarlierThanOrEqualTo nowDateAfter10Seconds"); 
} else {NSLog(@"nowDate isNotEarlierThanOrEqualTo nowDateAfter10Seconds");
}

3.比较日期是否较晚

- (NSDate *)laterDate:(NSDate *)anotherDate;

        比较A日期是否晚与B日期和上面的返回结果刚好相反。

    
NSDate * nowDate = [NSDate now];
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10];    
if ([nowDate isLaterThan:nowDateAfter10Seconds]) {NSLog(@"nowDate isLaterThan nowDateAfter10Seconds");    
} else {NSLog(@"nowDate isNotLaterThan nowDateAfter10Seconds");
}

4.带回调的日期比较的方法

- (NSComparisonResult)compare:(NSDate *)other;

        这里这个方法的返回值是NSComparisonResult类型的枚举,当两个日期完全相同的时候返回NSOrderedSame。  

  1. A < B     返回 NSOrderedAscending
  2. A > B     返回 NSOrderedSame

  3. A == B   返回 NSOrderedDescending
NSDate * nowDate = [NSDate now];=   
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10];  
NSComparisonResult  comparisonResult = [nowDate compare:nowDateAfter10Seconds];
NSLog(@"比较结果:%ld",comparisonResult );

五、获取时间间隔

1.与指定日期的时间间隔

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;        

        返回和指定日期的时间间隔,单位是秒。

NSDate * nowDate = [NSDate now];
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10]; 
NSTimeInterval timeInterval = [nowDate timeIntervalSinceDate:nowDateAfter10Seconds]; 
NSLog(@"nowDate和nowDateAfter10Seconds间隔%lf秒",timeInterval);

2.距离现在的时间间隔

@property (readonly) NSTimeInterval timeIntervalSinceNow;

        返回指定日期距离现在的时间间隔。

NSDate * nowDate = [NSDate now];    
NSDate * nowDateAfter10Seconds = [NSDate dateWithTimeIntervalSinceNow:10]; 
NSTimeInterval timeInterval = nowDateAfter10Seconds.timeIntervalSinceNow;  
NSLog(@"timeInterval:%lf秒",timeInterval);

3.距离2001年的时间间隔

@property (readonly) NSTimeInterval timeIntervalSinceReferenceDate;        

        返回指定日期距离2001年1月1日的时间间距,单位是秒。

NSDate * nowDate = [NSDate now];    
NSTimeInterval timeInterval = nowDate.timeIntervalSinceReferenceDate;    
NSLog(@"timeInterval:%lf秒",timeInterval);

4.距离1970年的时间间隔 

@property (readonly) NSTimeInterval timeIntervalSince1970; 

        返回指定日期距离1970年1月1日的时间间距,单位是秒。

NSDate * nowDate = [NSDate now];    
NSTimeInterval timeInterval = nowDate.timeIntervalSince1970;    
NSLog(@"timeInterval:%lf秒",timeInterval);

六、时间的运算

- (instancetype)dateByAddingTimeInterval:(NSTimeInterval)ti;   

        返回指定秒数之后的时间。

NSDate * nowDate = [NSDate now];
NSDate * nowDateAfter = [nowDate dateByAddingTimeInterval:24 * 60 * 60];
NSLog(@"nowDateAfter:%@",nowDateAfter);

这篇关于iOS NSDate的常用API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

CSS弹性布局常用设置方式

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

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

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

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

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

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

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加