OC学习-NSDate

NSDate 与 NSDateFormatter

NSDate

NSDate的使用

+date方法

  • NSDate是用于处理日期和时间的基础类
  • 使用+date方法
NSDate *date = [NSDate date];
NSLog(@"%@",date);

打印结果:

2015-07-23 17:49:50.151 OC07_NSDate[3518:199911] 2015-07-23 09:49:50 +0000

注意:+date获取的时间,无论在哪个区,都是打印相对应的零时区的时间

获取当前时区

// 先获取一下当前所在时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"%@",zone);

结果:

2015-07-23 17:52:02.218 OC07_NSDate[3539:201259] Asia/Shanghai (GMT+8) offset 28800

获取当前与0时区相差的秒数

(代码前后关联,zone和date都是前面代码定义的)

NSInteger seconds = [zone secondsFromGMTForDate:date];
NSLog(@"%ld",seconds);

结果:

2015-07-23 17:52:02.218 OC07_NSDate[3539:201259] Asia/Shanghai (GMT+8) offset 28800

通过相差的秒数获取现在的时间

NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:28800];
NSLog(@"%@",localDate);

结果:

2015-07-23 17:57:28.077 OC07_NSDate[3572:203747] 2015-07-23 17:57:28 +0000

时间间隔

  • 对应的类型为double

计算两个对象的时间间隔

NSTimeInterval interval = [localDate timeIntervalSinceDate:date];
NSLog(@"%g",interval);

结果:

2015-07-23 18:01:16.854 OC07_NSDate[3596:205646] 28800

代码练习

计算当前时间和固定时间的差值,如果60s内,输出刚刚,如果在60-3600秒内,输出,分组前,如果3600秒外,输出xx小时前

NSDate *currentDate = [NSDate date];
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:10000];
NSTimeInterval interval = [date2 timeIntervalSinceDate:currentDate];
    if (interval < 60) {
        NSLog(@"just now");
    }else if(interval >= 60 && interval <=3600){
        NSLog(@"%ld分钟",(NSInteger)interval / 60);
    }else if(interval > 3600 && interval <= 3600 * 24){
        NSLog(@"%ld小时", (NSInteger)interval / 3600);
    }

NSDateFormatter

NSDateFormatter是iOS中的日期格式类,功能是实现NSString和NSDate的互转。

NSDate -> NSString

NSDate *date = [NSDate date];
NSString *dateStr =[NSString  stringWithFormat:@"%@",date];
NSLog(@"%@",dateStr);

时间的格式



yyyy-MM-dd

y代表年

M 月

d 日



HH-mm-ss

H 小时(24小时)

m 分钟

s 秒



代码:

// 先设置一下时间的格式,要转换的时间要和格式相吻合
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [NSDate date];
// 通过格式,把指定的时间直接转换成NSString
// 通过这种方式,系统还会把时间切换成当前的时间
NSString *strDate = [formatter stringFromDate:date];
NSLog(@"%@",strDate);

结果:

2015-07-23 19:18:35.673 OC07_NSDate[3720:225797] 2015-07-23 19:18:35

NSString-> NSDate

代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *timeStr = @"2015-07-23 17:21:20";
NSDate *date = [formatter dateFromString:timeStr];
NSLog(@"%@",date);

结果:

2015-07-23 19:20:24.225 OC07_NSDate[3754:226900] 2015-07-23 09:21:20 +0000

版权声明:本文为博主原创文章,转载请注明原文地址

时间: 2024-11-01 10:21:48

OC学习-NSDate的相关文章

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

OC学习篇之---总结和学习目录

今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请OC老鸟来喷~~ 1.OC学习篇之---概述 2.OC学习篇之---第一个程序HelloWorld 3.OC学习篇之---类的定义 4.OC学习篇之---类的初始化方法和点语法的使用 5.OC学习篇之---类的三大特性(封装,继承,多态) 6.OC学习篇之[email protected]关键

iOS开发-OC篇-NSDate

今天总结一下OC中NSDate的一些简单的用法,注意可不是NSData哦! NSDate的使用 1> NSDate初始化方法 //获取当前时间 NSDate * date = [NSDate date]; //返回以当前时间为基准,然后过了secs秒的时间 [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; //返回以lastDate为基准,然后过了secs秒的时间 [NSDate dateWithTimeInterval:60 * 60 *

IOS开发-OC学习-常用功能代码片段整理

IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是在做与URL有关的功能时,需要在Info.plist中添加一段代码进而实现让网址完成从Http到Https的转换,以及其他的一些功能. 在从一个新手到逐渐学会各种功能.代码.控件.方法如何使用的过程中,也在逐渐积累一些知识,但是一次总不会把这些东西都深刻记住并完全理解.所以在这儿记录下这些东西,用来

OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的一种了,而且也是最简单的一种 实现单例模式有三个条件 1.类的构造方法是私有的 2.类提供一个类方法用于产生对象 3.类中有一个私有的自己对象 针对于这三个条件,OC中都是可以做到的 1.类的构造方法是私有的 我们只需要重写allocWithZone方法,

OC关于NSDate类的方法和应用的总结!(全)

<span style="font-size:18px;">//1.创建日期对象 //创建的NSDate对象,获得的永远是0时区时间,如果要是求东八区时间,就加8个小时 NSDate *date = [NSDate date]; NSLog(@"%@",date); //创建明天此时的日期(时间间隔都是以秒为单位计算的) NSDate *tomorrow  = [NSDate dateWithTimeIntervalSinceNow:24*60*60];

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

(转载)OC学习篇之[email&#160;protected]关键字的作用以及#include和#import的区别

前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了 二.关键字@class的作用 在来看一下OC中的关键字@class的作用,在

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.