`

【Objective-C】NSDate详解及获取当前时间等常用操作

阅读更多

NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等。

 

1. 创建或初始化可用以下方法

用于创建NSDate实例的类方法有

+ (id)date;

返回当前时间

+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;  

返回以当前时间为基准,然后过了secs秒的时间

+ (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;

返回以2001/01/01 GMT为基准,然后过了secs秒的时间

+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

返回以1970/01/01 GMT为基准,然后过了secs秒的时间

+ (id)distantFuture;

返回很多年以后的未来的某一天。(比如你需要一个比现在(Now)()很长时间的时间值,则可以调用该方法。测试返回了4000/12/31 16:00:00

+ (id)distantPast;

返回很多年以前的某一天。(比如你需要一个比现在(Now)()大很长时间的时间值,则可以调用该方法。测试返回了公元前0001/12/31 17:00:00

 

用于创建NSDate实例的实例方法有

- (id)addTimeInterval:(NSTimeInterval)secs;

返回以目前的实例中保存的时间为基准,然后过了secs秒的时间

 

用于初始化NSDate实例的实例方法有

- (id)init;

初始化为当前时间。类似date方法

初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似dateWithTimeIntervalSinceReferenceDate:方法

- (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate;

初始化为以refDate为基准,然后过了secs秒的时间

- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;

初始化为以当前时间为基准,然后过了secs秒的时间

 

2. 日期之间比较可用以下方法

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

otherDate比较,相同返回YES

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

anotherDate比较,返回较早的那个日期

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

anotherDate比较,返回较晚的那个日期

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

该方法用于排序时调用:

当实例保存的日期值与anotherDate相同时返回NSOrderedSame

当实例保存的日期值晚于anotherDate时返回NSOrderedDescending

当实例保存的日期值早于anotherDate时返回NSOrderedAscending

 

 

3. 取回时间间隔可用以下方法

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

refDate为基准时间,返回实例保存的时间与refDate的时间间隔

- (NSTimeInterval)timeIntervalSinceNow;

以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔

- (NSTimeInterval)timeIntervalSince1970;

1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔

- (NSTimeInterval)timeIntervalSinceReferenceDate;

2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔

+ (NSTimeInterval)timeIntervalSinceReferenceDate;

2001/01/01 GMT为基准时间,返回当前时间(Now)2001/01/01 GMT的时间间隔

 

 

4. 将时间表示成字符串

- (NSString *)description;

YYYY-MM-DD HH:MM:SS ±HHMM的格式表示时间。(其中 "±HHMM" 表示与GMT的存在多少小时多少分钟的时区差异。比如,若时区设置在北京,则 "±HHMM" 显示为 "+0800"

 

同时奉上一个比较常用的获取自1970年以来的毫秒数的方法:

NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
// NSTimeInterval返回的是double类型,输出会显示为10位整数加小数点加一些其他值
// 如果想转成int型,必须转成long long型才够大。
    NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
    long long dTime = [[NSNumber numberWithDouble:time] longLongValue]; // 将double转为long long型
    NSString *curTime = [NSString stringWithFormat:@"%llu",dTime]; // 输出long long型
 
分享到:
评论
1 楼 wuxuewujiang 2014-03-29  
很详细!很有用的整理。

相关推荐

    Using Swift with Cocoa and Objective-C中文

    ### 使用Swift与Cocoa及Objective-C的互操作性详解 #### 开始 Swift作为一种现代、高效的语言,在苹果的生态系统中迅速崛起,成为iOS、macOS、watchOS和tvOS开发的首选语言。Swift的设计旨在与现有的Cocoa和...

    objective-c教程

    Objective-C教程还会介绍Foundation框架,这个框架提供了很多对常用数据结构的操作。例如,处理字符串(NSString和NSMutableString)、数组(NSArray和NSMutableArray)、字典(NSDictionary和NSMutableDictionary)...

    Lecture 3: Objective-C

    本讲座深入探讨了Objective-C编程语言的关键概念,包括方法(类和实例)、实例变量、属性、动态绑定、内省、nil与BOOL,以及Foundation框架中的核心类如NSObject、NSString、NSMutableString、NSNumber、NSValue、...

    Programming in Objective-C 4th Edition

    - **Objective-C 运行时**:Objective-C 运行时提供了一系列函数,可以用来操作类、方法和实例变量。 ### 基础语法与数据类型 Objective-C 的基础语法类似于 C 语言,但增加了许多面向对象的特性。本书将详细介绍...

    Objective-C笔试及答案

    ### Objective-C笔试知识点详解 #### 一、OC中与`alloc`相反的方法 **知识点:** `dealloc` 方法 - **背景介绍:** 在Objective-C中,内存管理是非常重要的一个环节。`alloc` 方法用于分配内存,而`dealloc`方法则...

    iOS NSDate资料

    在iOS开发中,我们经常会遇到对日期和时间进行操作的需求,例如记录用户的登录时间、设置定时任务等场景。`NSDate`类提供了丰富的API来帮助开发者完成这些任务。本文将详细介绍`NSDate`类的常用功能及其使用方法。 ...

    iOS GPS定位

    ### iOS GPS定位技术详解 #### 一、引言 在移动应用开发中,地理位置服务是一项非常重要的功能。尤其是在iOS平台上,开发者可以利用苹果提供的Core Location框架来实现各种基于位置的服务功能,例如地图导航、周边...

    iOS计算年龄的封装

    ### iOS计算年龄的封装知识点详解 #### 一、概述 在iOS开发中,经常会遇到需要根据用户的出生日期来计算其年龄的需求。为了提高代码的复用性和可维护性,可以将这一功能进行封装,形成一个方便调用的方法。本文将...

    SimpleDatePicker.zip

    《SimpleDatePicker:平面风格的Objective-C日期选择器详解》 在iOS应用开发中,日期选择器(DatePicker)是常见的用户界面元素,它允许用户选择日期或时间。在Objective-C编程中,我们通常会使用苹果提供的...

    IOS 开发之Object-C中的对象详解

    在iOS开发中,Foundation框架是Objective-C编程的基础,提供了诸如字符串、数组、字典等基本数据类型以及时间、网络、文件系统等系统服务的接口。学习Objective-C的开发者通常会从这个框架入手,逐步掌握更复杂的iOS...

    iOS地图位置开发方法.doc

    ### iOS地图位置开发详解 #### 一、概述 在iOS应用开发中,地理位置服务是非常重要的一个组成部分,尤其对于需要提供地图导航、位置分享等功能的应用来说更是如此。iPhone SDK提供了多种方式来获取设备的位置信息...

    Object-C的语法与Cocoa框架V1.0.pdf

    ### Object-C的语法与Cocoa框架详解 #### 一、Object-C简介 **Object-C**是一种通用、面向对象的编程语言,它是在C语言的基础上增加了面向对象的特性。Object-C最初由Stepstone公司开发,后被苹果公司采纳,并广泛...

    schedule:Class-schedule 仿课程格子

    6. **Date and Time Handling**:处理日期和时间的Objective-C类,如NSDate、NSCalendar、NSTimeZone,用于创建、比较和格式化时间。 7. **Storyboard和Auto Layout**:通过Storyboard进行界面布局,并使用Auto ...

    高级UI 控件

    在视图加载完成时,通过`viewDidLoad`方法初始化日期时间拾取器,设置其默认显示时间为当前系统时间,并开启动画效果,使得初始显示更加平滑自然: ```objective-c -(void)viewDidLoad{ NSDate *now = [NSDate ...

    Foundation

    **Foundation框架详解** Foundation框架是iOS开发中的基石,它是Apple为macOS、iOS、watchOS和tvOS等操作系统提供的一套基础工具集。这个框架包含了众多用于构建应用程序的基础类和对象,是所有Objective-C和Swift...

    iOS本地推送与远程推送详解

    ### iOS本地推送与远程推送详解 #### 一、概述 在iOS开发中,推送通知是一种非常重要的功能,它能够在应用程序不在前台运行时向用户发送消息提醒。根据推送方式的不同,可以将其分为本地推送和远程推送两种类型。...

    iOS中捕获日志与异常示例详解

    iOS中捕获日志与异常示例详解 iOS 中捕获日志与异常示例详解是 iOS 开发中一个非常重要的环节。在日常的工作中,日志是不可缺少的一个环节,它可以帮助开发者们更好地 debug 和优化应用程序的性能。在这篇文章中,...

    jizhang.zip

    这个项目的核心是利用Objective-C(简称OC)语言进行编程, OC是苹果公司为iOS和Mac OS X操作系统设计的一种面向对象的编程语言,它的语法简洁且直观,对于学习iOS开发的人来说,是一个很好的起点。 1. **Xcode项目...

    Foundation Framework Reference&iphone Foundation框架参考

    9. **NSDate**: 用来表示日期和时间的对象,提供了时间计算和比较的方法。 10. **NSPredicate**: 用于创建查询条件,常用于过滤数组或集合中的对象。 11. **NSNotification**: 实现观察者模式,允许对象监听和响应...

Global site tag (gtag.js) - Google Analytics