Objective-C学习篇10—NSDate与NSDateFormatter
NSDate
NSDate 时间类,继承自NSObject,其对象表示一个时间点
NSDate *date = [NSDate date];
NSLog(@"date = %@", date);
2015-12-04 19:08:00.624 OCNSDate[2955:309612] date = 2015-12-04 11:08:00 +0000
打印显示的是格里尼治时间 年-月-日 时:分:秒 + 时区
1. 得到一个距离当前时间间隔时间点的创建方法 dateWithTimeIntervalSinceNow:(NSTimeInterval)
(NSTimeInterval) 的本质是double数据类型
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:**]; // 用格里尼治时间加8个小时的时差,得到北京时间
NSLog(@"date1 = %@", date1);
2015-12-04 19:08:00.625 OCNSDate[2955:309612] date1 = 2015-12-04 19:08:00 +0000
练习1:得到明天当前的时间点
NSDate *nextDay = [NSDate dateWithTimeIntervalSinceNow:** + **];
练习2:得到明年的时间点
NSDate *nextYear = [NSDate dateWithTimeIntervalSinceNow:*** + **];
NSLog(@"%@", nextYear);
2. 计算给定时间和当前时间点的时间间隔 .timeIntervalSinceNow
NSTimeInterval interval = nextDay.timeIntervalSinceNow;
NSLog(@"%.2f", interval);
3. 计算两个时间点的时间间隔 timeIntervalSinceDate:
NSTimeInterval interval2 = [date timeIntervalSinceDate:nextYear];
NSLog(@"%.2f", interval2);
时间戳的概念: 一个时间点距离 1970.1.1 的时间间隔,这个时间是以秒为单位,就叫做时间戳
时间戳的求法: timeIntervalSince1970
NSTimeInterval interval3 = [date timeIntervalSince1970];
NSLog(@"%.2f", interval3);
将时间戳转化为时间对象 dateWithTimeIntervalSince1970:
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:3600];
NSLog(@"%@", date2);
获取北京时间 dateByAddingTimeInterval:
NSDate *date3 = [date dateByAddingTimeInterval:8*60*60];
NSLog(@"%@", date3);
练习3: 一个当前时间和一个固定时间的差值,如果差值在60秒之内,则输出"刚刚",如果时间差值在60~3600秒,则输出在"xx分钟之前", 如果在3600~24*3600之内,则输出在"xx小时之前",如果在24*3600秒之外输出固定的时间
固定时间
NSDate *pastDate = [NSDate dateWithTimeIntervalSinceNow:-];
NSLog(@"%@", pastDate);
当前时间
NSDate *nowDate = [NSDate date];
固定时间与当前时间的差值
NSTimeInterval interval4 = [nowDate timeIntervalSinceDate:pastDate];
NSLog(@"时间差为 %.2f 秒", interval4);
) {
NSLog(@"刚刚");
}){
NSLog();
}*){
NSLog();
}*){
NSLog(@"%@", pastDate);
}
NSDateFormatter
NSDateFormatter 日期格式类,继承自NSFormatter,主要作用是将NSDate对象转换为某种格式,然后以字符串的形式输出
NSDateFormatter *formartter = [[NSDateFormatter alloc] init];
1. 设置日期格式中用到的字母: y 代表年, M 代表 月, d 代表天 H 代表时 m 代表分, s 代表秒
[formartter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
NSDate *date4 = [NSDate dateWithTimeIntervalSinceNow:];
2. 将时间对象转为设定的格式 stringFromDate:
格式化的时候系统会自动加上距离零时区的时间间隔
NSString *dateString = [formartter stringFromDate:date4];
NSLog(@"%@", dateString);
练习: 将date4以@"2015年份09月份24号 11点43分20秒"的形式输出
创建一个时间格式类对象 init方法创建
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
指定输出格式 setDateFormat:@"具体时间格式"
[myFormatter setDateFormat:@"yyyy年份MM月份dd号 HH点mm分ss秒"];
用一个字符串接收转化后的时间 stringFromDate:
NSString *dateString1 = [myFormatter stringFromDate:date4];
NSLog(@"%@", dateString1);
将时间字符串转换为NSDate对象
例如: @"2015年11月24号 11时10分10秒"
NSDateFormatter *formatter3 = [[NSDateFormatter alloc] init];
[formatter3 setDateFormat:@"yyyy年MM月dd号 HH时mm分ss秒"];
准备时间字符串
NSString *dateString3 = @"2015年11月24号 11时10分10秒";
使用时间格式对象借助时间字符串格式化时间对象
NSDate *date5 = [formatter3 dateFromString:dateString3];
转过来的时间会被回归到零时区的时间
NSLog(@"%@", date5);
如果想得到北京时间需要手动加上8小时
NSDate *date6 = [date5 dateByAddingTimeInterval:**];
NSLog(@"%@", date6);

Objective-C学习篇10—NSDate与NSDateFormatter的更多相关文章
- [python][django学习篇][10]再次修改博客首页模板
目前我们看到的只是模板中预先填充的一些数据,我们得让它显示从数据库中获取的文章数据.下面来稍微改造一下模板: 删除所有article标签,然后添加以下内容,将从数据库读取到的内容填充到模板变量{{ p ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- Java多线程(学习篇)
Java多线程:(学习篇) 1.什么是线程 2.线程状态 3.线程中断 4.线程交互 5.同步机制 6.锁机制 7.堵塞队列与堵塞栈 8.条件变量.原子量.线程池等 9.线性安全类和Callable与 ...
- python-基础学习篇(一)
python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习“永无止境”的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. python介绍 ...
- Unity3D热更新之LuaFramework篇[10]--总结篇
背景 19年年初的时候,进到一家新单位,公司正准备将现有的游戏做成支持热更的版本.于是寻找热更方案的任务就落在了我头上. 经过搜索了解,能做Unity热更的方案是有好几种,但是要么不够成熟,要么不支持 ...
- 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录
目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...
- OC学习篇之---总结和学习目录
今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生 ...
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...
- Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
随机推荐
- iOS使用VLC
简 注册登录 添加关注 作者 牵线小丑2016.03.18 10:42 写了4836字,被38人关注,获得了43个喜欢 iOS使用VLC 字数946 阅读698 评论1 喜欢14 简介 库 ...
- An unspecified error occurred!
在我们生成证书的时候,有时候会遇到这个问题,明明刚从电脑的钥匙串申请的证书,却报错!遇到这个不用急.多试几次.不是你的生成的证书不管用,多半原因是因为你的网速太挫了!
- Java---多线程的加强(1)
简单应用: 首先来看一个简单的例子: 两个线程,分别实现对1-100内的奇数,偶数的输出. 第一种方法:通过接口 MyRun类: package thread.hello; /** * 通过实现Run ...
- 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)
修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ...
- 嵌入式环境搭建之NFS
嵌入式环境搭建之NFS Author:tiger-johnTime:2013-08-04mail:jibo.tiger@gmail.comBlog:http://blog.csdn.net/tiger ...
- finally与return
finally关键字:和try块使用,一般做资源释放操作,比如关闭流.关闭数据库连接,释放锁. return:用于返回值. finally块可保证一定执行,当逻辑处理有返回值时,会首先执行finall ...
- 在mac上利用homebrew安装软件
在mac经常需要安装一些软件,你可以通过app store下载,或者可以通过浏览袭搜索下载.这里介绍通过homebrew安装一些软件,它会自动为你下载一些软件的相关依赖,免去安装的烦恼. 首先我们需要 ...
- 从无到有开发连麦直播技术<转>
转贴地址:http://blog.csdn.net/heisedelangzi/article/details/52400333 从无到有开发连麦直播技术点整理-AnyRTC 直播关键字 采集.前处理 ...
- uva 12253 - Simple Encryption(dfs)
题目链接:uva 12253 - Simple Encryption 题目大意:给定K1.求一个12位的K2,使得KK21=K2%1012 解题思路:按位枚举,不且借用用高速幂取模推断结果. #inc ...
- 微信公众平台java开发具体解释(project代码+解析)
说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...