一.概念解释

1.什么是NSTimeZone?

NSTimeZone:时区是一个地理名字,是为了克服各个地区或者国家之间在时间上的混乱设定的。

1).GMT:0:00格林威治标准时间;UTC +00:00校准的全球时间;CCD +08:00中国的标准时间;

2).任何时区都以GMT为基准,即任何NSTimeZone对象所代表的时区都是相对于GMT的,这里的相对性是NSTimeZone中的一个重要的属性,我们称之为当前时区相对于GMT的偏移量,一旦知道了一个偏移量,便可以确定一个时区。在iOS中,偏移量是以"秒"为单位的。

3).iOS中的时间类NSDate中存储的时间,都是相对于GMT的,我们使用NSDate的时候,会根据App的时区设置返回与时区对应的数据。

4).iOS中的时区表示方法:GMT+0800 GMT-0800;(+:东区  -:西区; 前两位是小时数,后两位是分钟数)。GMT+0830意思是比GMT早8小时外加30分钟的时区。

2.NSDate类是以GTM时间为标准的。

二.获取此时此地的时间,并以规定的格式显示

    NSDate *  dateNow=[NSDate date];

    NSDateFormatter  *dateformatter = [[NSDateFormatter alloc] init];

    [dateformatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];

    NSString *locationString = [dateformatter stringFromDate:dateNow];

    NSLog(@"locationString:%@",locationString);

说明:

1.YYYY(年)/MM(月)/dd(日) hh(时):mm(分):ss(秒) SS(毫秒)

需要用哪个的话就把哪个格式加上去。

2.值得注意的是,如果想显示两位数的年份的话,可以用”YY/MM/dd hh:mm:ss SS”,两个Y代表两位数的年份。

3.而且大写的M和小写的m代表的意思也不一样。“M”代表月份,“m”代码分钟

4.“HH”代表24小时制,“hh”代表12小时制

三.计算两个时间点相隔时间

    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"]; NSString * startTimeStr = @"2016-01-21 18:40:20";
NSString * endTimeStr = @"2016-01-22 18:40:20";
NSDate * date1 = [dateFormatter dateFromString:startTimeStr];
NSDate * date2 = [dateFormatter dateFromString:endTimeStr]; //获取两个NSDate类型的时间区间(以秒为单位)
NSTimeInterval time = [date2 timeIntervalSinceDate:date1];
NSLog(@"%f",time);
//计算相隔天数
int days = (time) / ( * * );
NSLog(@"days = %d",days); //计算相隔小时数
int hours = (time) / ( * );
NSLog(@"hours = %d",hours); //计算相隔分钟数
int mintues = (time) / ();
NSLog(@"mintues = %d",mintues); //计算相隔秒数
int seconds = (time) / ();
NSLog(@"seconds = %d",seconds);

四.判断两个时间的关系:相同,大于,小于。

    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"]; NSString * startTimeStr = @"2016-01-21 18:40:20";
NSString * endTimeStr = @"2016-01-22 18:40:20";
NSDate * date1 = [dateFormatter dateFromString:startTimeStr];
NSDate * date2 = [dateFormatter dateFromString:endTimeStr]; NSComparisonResult result = [date2 compare:date1];
/**NSComparisonResult
NSOrderedAscending 降序
NSOrderedSame 相等
NSOrderedDescending 升序
*/
if (result == NSOrderedDescending)
{
NSLog(@"date2 > date1");
}
else
{
NSLog(@"date2 < date1");
}

iOS-NSDate的更多相关文章

  1. IOS NSDate NSDateFormatter 导致相差8小时

    时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...

  2. iOS NSDate等时间类的使用

    一.NSDate NSDate对象用来表示一个具体的时间点. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体. NSDate存储的是GMT时间,使用的时候会根据 ...

  3. iOS NSDate本地化

    1. NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; [outputFormatter setLocale:[NS ...

  4. iOS NSDate与NSString相互转化

    1.时间格式的字符串转date NSString *birthdayStr=@"1986-03-28 00:00:00.000"; NSDateFormatter *dateFor ...

  5. iOS NSDate获取当前时间并格式化

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM- ...

  6. iOS NSDate、NSCalendar、NSDateComponents

    时间解析(NSDate.NSCalendar.NSDateComponents): 1.使用NSCalendar和NSDateComponents解析日期,直接获取到年月日时分秒.获取到年月日时分秒其 ...

  7. iOS NSDate计算时间间隔

    //获取开始时间 NSDate* tmpStartData = [NSDate date]; /*( 执行代码段 )*/ ; i<; i++) { DLog(@"%d",i) ...

  8. iOS NSDate与NSString之间的相互转换

    假如我们需要把当前的时间当成一个字符串作为一张图片的名字的话,就需要把当前的时间NSDate类型的数据转换成NSString类型. 又或者在网络请求的时候,我们在网络上的到时间是一个字符串但是在本地就 ...

  9. iOS ----------NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别

    框架层: NSDate 属于Foundation CFAbsoluteTimeGetCurrent() 属于 CoreFoundatio CACurrentMediaTime() 属于 QuartzC ...

  10. IOS NSDate 调整当前时间戳为明天

    这个可以根据需要调整 在day  month  hour minute second  等都行 以下是以当前时间戳为基础,调整时间为明天的零点零时零分零秒  可以根据需要 写成毫秒的 +(NSStri ...

随机推荐

  1. Activiti 查看流程图

    package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...

  2. 转:LIRE的使用

    LIRE的使用:创建索引 LIRE(Lucene Image REtrieval)提供一种的简单方式来创建基于图像特性的Lucene索引.利用该索引就能够构建一个基于内容的图像检索(content- ...

  3. 高级屏幕空间反射: Screen Space Reflection (SSSR)

    SSSR进一步调优,对标寒霜级技术水平,实现方式为Direct3D 11+自主实现实时渲染引擎,方法为对比测试.实现已经有段时间了,还是简要更新下吧.以下画面中的SSSR效果全部采用1:4 resol ...

  4. Codeforces Round #382 (Div. 2)C. Tennis Championship 动态规划

    C. Tennis Championship 题目链接 http://codeforces.com/contest/735/problem/C 题面 Famous Brazil city Rio de ...

  5. BW CUBE 数据的聚集和压缩

    大家都知道,压缩和聚集都是提高bw性能的方法,在新版bw里,压缩名称改成了折叠,聚集放在了滚动菜单里---集合.那么我们在使用这两种方法时需要注意的先创建聚集以后,再进行压缩,因为压缩的过程是把F表的 ...

  6. 关于meta知多少

    本来打算写关于手机端的知识,想了想先从meta着手.接下来请大家看几个网站的例子. 一.天猫(http://m.tmall.com) <title>天猫触屏版</title> ...

  7. windows 应用商店应用笔记

    xaml http://www.cnblogs.com/free722/archive/2011/11/06/2238073.html win8 http://blog.csdn.net/ygzk12 ...

  8. JAVA中堆栈和内存分配原理

    1.栈.堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量 ...

  9. 算法 - 求两个自然数的最小公倍数(C++)

    //************************************************************************************************** ...

  10. Unity5网络模块UNet介绍

    前段时间,研究了一下UNet,经过项目实践,大致整理了下遇到的问题. 源码Bitbucket:需要说明的是,这个项目只包含上层的包装,一些低层的网络实现在Unity内部,如NetworkTranspo ...