转载自:http://my.oschina.net/yongbin45/blog/150114
- NSDate对象用来表示一个具体的时间点。
- NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体。
- NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示。
可以快速地获取的时间点有:
2 |
相对于 1 January 2001 ,
GMT的时间点 |
4 |
distantFuture
(不可达到的未来的某个时间点) |
5 |
distantPast
(不可达到的过去的某个时间点 |
根据http://www.gnustep.org/实现的NSDate的版本:
01 |
@interface
NSDate : NSObject <NSCoding, NSCopying> |
03 |
NSTimeInterval
_secondsSinceRef; |
08 |
-
(id) initWithTimeInterval:(NSTimeInterval) secsToBeAdded |
09 |
sinceDate:(NSDate
*) anotherDate; 相对于已知的某个时间点 |
10 |
-
(id) initWithTimeIntervalSinceNow:(NSTimeInterval) secsToBeAdded; 相对于当前时间 |
11 |
-
(id) initWithTimeIntervalSince1970:(NSTimeInterval)seconds; 相对于1970年1月1日0时0分0秒 |
12 |
-
(id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs; 相对于2001年1月1日0时0分0秒 |
可以看出,NSDate类确实只是一个相对的时间点,NSTimeInterval的单位是秒(s),_secondsSinceRef则说明NSDate对象是相对于ReferenceDate(2001年1月1日0时0分0秒)的一个时间点。
同时,根据Cocoa框架的设计原则,每个类都有一个“指定初始化方法”(指定初始化方法是参数最全,且其他初始化方法都会调用的初始化方法)。http://www.gnustep.org/实现的版本以方法:
1 |
-
(id) initWithTimeIntervalSinceReferenceDate:(NSTimeInterval) secs; |
作为指定初始化方法,也就是说所有的时间点都转化为了相对referenceDate的时间点(时间点都是相对的,因为时间本身就是相对的)。
NSDate中最常用的方法一般是:
01 |
NSDate
*now = [NSDate date]; //
[[NSDate alloc] init] |
02 |
NSDate
*dateFromNow = [NSDate dateWithTimeIntervalSinceNow:60]; |
03 |
NSDate
*dateFromAnotherDate = [[NSDate alloc] initWithTimeInterval:60 sinceDate:dateFromNow]; |
05 |
NSTimeInterval
timeInterval1 = [now timeIntervalSinceDate:dateFromNow]; |
06 |
NSTimeInterval
timeInterval2 = [now timeIntervalSinceNow]; |
10 |
//------------------------------------------------------------- |
11 |
NSDate
*distantPast = [NSDate distantPast]; //
可以表示的最早的时间 |
12 |
NSDate
*distantFuture = [NSDate distantFuture]; //
可以表示的最远的未来时间 |
14 |
NSString
*stringDate = @ "12/31/9999" ; |
15 |
NSDateFormatter
*dateFormatter = [[NSDateFormatter alloc]init]; |
16 |
[dateFormatter
setDateFormat:@ "MM/dd/yyyy" ]; |
17 |
NSDate
*dateCheck = [dateFormatter dateFromString:stringDate]; |
18 |
NSLog(@ "Date
= %@" ,
dateCheck); |
21 |
Date
= 1999-12-30 16:00:00 +0000 |
23 |
*iOS中用NSDate表示的时间只能在distantPast和distantFuture之间! |
- NSDate 哪些事
.什么是时间戳? 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间的总秒数. 2.NSDate,时间戳,NSString 之间的转换 //string 转 date + ...
- NSDate与时间戳的那点事
对于项目中常常使用的时间来说,通过时间戳的形式进行数据的操作能带来极大的方便,以下就时间戳的生成和转换通过Demo的形式进行解说 声明一个时间类型的变量: // 获取当前的时间 // 以下的第一个方法 ...
- OC: 类的扩展、类的延展、协议、 NSDate
NSDateFormatter 指定⽇日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter ...
- 【腾讯Bugly干货分享】H5 视频直播那些事
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...
- CSharpGL(31)[译]OpenGL渲染管道那些事
CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一 ...
- TODO:字节的那点事Go篇
TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64) 在Golang中string底层是由byte数组组成的. fmt.Println(len(&quo ...
- Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事
前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...
- OpenNLP:驾驭文本,分词那些事
OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...
- HTTPS那些事(一)HTTPS原理
转载来自:http://www.guokr.com/post/114121/ 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传 ...
随机推荐
- centos的DNS服务工作流程及搭建
1 什么是DNS? DNS(Domain Name Server,域名服务器)即域名解析服务,是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS ...
- Java 5种单例模式
/*单例模式: 指某个类中只能存在一个对象实例,并且该类中只提供一个取得其对象实例的方法 优点:减少系统性能开销 应用场景:网站的计数器,任务管理器,回收站等*/ //单例模式1 -- 静态内部类 ...
- 洛谷 - P1346 - 电车 - Dijkstra/01BFS
https://www.luogu.org/problem/P1346 使用最短路之前居然忘记清空了. #include<bits/stdc++.h> using namespace st ...
- /cat/cpuinfo信息查看
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数cat /proc/cpuinfo| g ...
- go & Windows Service
相关库 https://godoc.org/golang.org/x/sys/windows/svc https://github.com/kardianos/service https://gith ...
- jQuery之链式编程
使用的思想:隐式迭代. <button>快速</button> <button>快速</button> <button>快速</but ...
- git error: failed to push some refs to 'git@github.com:xxx/xxx.git'
本地仓库中和远程仓库不一致,缺少readme.md文件 解决方式参见:https://blog.csdn.net/qq_37281252/article/details/79044798
- arcgis server10.2自带打印模板路径
找到arcgis server10.2安装目录路径,我的安装路径为C盘,如下: C:\Program Files\ArcGIS\Server\Templates\ExportWebMapTemplat ...
- htm、html、shtml区别。(web服务器配置ssi)
转载源:http://www.divcss5.com/html/h59.shtml 首先htm.html.shtml都是静态网页的后缀,三者也可以说都是只是扩展名不同,其他一样,都是静态的网页.Htm ...
- console 对象
JavaScript 原生中默认是没有 Console 对象,这是宿主对象(也就是游览器)提供的内置对象. 用于访问调试控制台,在不同的浏览器里效果可能不同.Console 对象方法: