NSDate简单使用

一、NSDate初始化

  1. // 获取当前日期
  2. NSDate *date = [NSDate date];
  3. // 打印结果: 当前时间 date = 2013-08-16 09:00:04 +0000
  4. NSLog(@"当前时间 date = %@",date);
  5. // 获取从某个日期开始往前或者往后多久的日期,此处60代表60秒,如果需要获取之前的,将60改为-60即可
  6. date = [[NSDate alloc] initWithTimeInterval:60 sinceDate:[NSDate date]];
  7. //打印结果:当前时间 往后60s的时间date = 2013-08-16 09:01:04 +0000
  8. NSLog(@"当前时间 往后60s的时间date = %@",date);

PS:测试时时间是下午5点,但是得到的当前时间却是上午9点,相差了8小时,是时区的问题

解决办法:

  1. NSTimeZone *zone = [NSTimeZone systemTimeZone];
  2. NSInteger interval = [zone secondsFromGMTForDate: date];
  3. NSDate *localDate = [date  dateByAddingTimeInterval: interval];
  4. // 打印结果 正确当前时间 localDate = 2013-08-16 17:01:04 +0000
  5. NSLog(@"正确当前时间 localDate = %@",localDate);

二、NSDate与NSString的转换

  1. /*---- NSDate与NSString----*/
  2. NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
  3. // 设置日期格式
  4. [dateFormatter setDateFormat:@"年月日 YYYY/mm/dd 时间 hh:mm:ss"];
  5. NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
  6. // 打印结果:dateString = 年月日 2013/10/16 时间 05:15:43
  7. NSLog(@"dateString = %@",dateString);
  8. // 设置日期格式
  9. [dateFormatter setDateFormat:@"YYYY-MM-dd"];
  10. NSString *year = [dateFormatter stringFromDate:[NSDate date]];
  11. // 打印结果:年月日 year = 2013-08-16
  12. NSLog(@"年月日 year = %@",year);
  13. // 设置时间格式
  14. [dateFormatter setDateFormat:@"hh:mm:ss"];
  15. NSString *time = [dateFormatter stringFromDate:[NSDate date]];
  16. // 打印结果:时间 time = 05:15:43
  17. NSLog(@"时间 time = %@",time);

三、日期的比较

  1. /*----日期时间的比较----*/
  2. // 当前时间
  3. NSDate *currentDate = [NSDate date];
  4. // 比当前时间晚一个小时的时间
  5. NSDate *laterDate = [[NSDate alloc] initWithTimeInterval:60*60 sinceDate:[NSDate date]];
  6. // 比当前时间早一个小时的时间
  7. NSDate *earlierDate = [[NSDate alloc] initWithTimeInterval:-60*60 sinceDate:[NSDate date]];
  8. // 比较哪个时间迟
  9. if ([currentDate laterDate:laterDate]) {
  10. // 打印结果:current-2013-08-16 09:25:54 +0000比later-2013-08-16 10:25:54 +0000晚
  11. NSLog(@"current-%@比later-%@晚",currentDate,laterDate);
  12. }
  13. // 比较哪个时间早
  14. if ([currentDate earlierDate:earlierDate]) {
  15. // 打印结果:current-2013-08-16 09:25:54 +0000 比 earlier-2013-08-16 08:25:54 +0000
  16. NSLog(@"current-%@ 比 earlier-%@ 早",currentDate,earlierDate);
  17. }
  18. if ([currentDate compare:earlierDate]==NSOrderedDescending) {
  19. // 打印结果
  20. NSLog(@"current 晚");
  21. }
  22. if ([currentDate compare:currentDate]==NSOrderedSame) {
  23. // 打印结果
  24. NSLog(@"时间相等");
  25. }
  26. if ([currentDate compare:laterDate]==NSOrderedAscending) {
  27. // 打印结果
  28. NSLog(@"current 早");
  29. }
时间: 2024-10-21 16:44:09

NSDate简单使用的相关文章

NSDate的简单用法

NSDate  使用date方法获取的当前时间  是0时区的时间 NSDate *date = [NSDate date]; NSLog(@"%@",date); //如果想获取当前时区的当前时间 需要 + 8小时 NSDate *now = [NSDate dateWithTimeIntervalSinceNow:8 * 60 * 60]; NSLog(@"%@",now); //获取昨天此时时间 NSDate *yesterday = [NSDate dateW

OC基础--常用类的初步介绍与简单使用之NSDate

一.创建一个时间 NSDate *date = [NSDate date]; // 打印出的时间是0时区的时间(北京--东八区) NSLog(@"%@",date); 二.日期格式化类NSDateFormatter 1>日期转化字符串 1 // 创建一个NSDate对象 2 NSDate *date = [NSdate date]; 3 // 创建一个NSDateFormatter对象 4 NSDateFormatter *formatter = [[NSDateFormatte

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

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 *

NSDate仅获取日期年月日的实现--即只要年月日,不要多余的小时分钟秒数

(仅个人鄙见,如有不同,或效率不高还请指出,谢谢) 最近在写一个背单词的app,根据艾宾浩斯曲线来复习强化记忆,需要计算两次复习的相差天数,正好需要获取一个(不包含当天时间)的日期 比如我们用 [NSDate date]获取当前时间,得到的数据如下: 2015-03-13 14:08:55 +0000 很明显,我只要想要 2015-03-13,它后面还多了 14:08:55 (当天的具体时间),这样再转成NSTimeInterval的时候计算两次时间差有可能不符合我的判别复习要求(即未满相隔1天

Realm数据库的简单介绍和使用

给大家介绍一个数据库操作的框架Realm,本文主要以iOS 平台的使用场景为例. realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android: 核心数据引擎由C++打造,并不是建立在SQLite之上的ORM, 拥有独立的数据库存储引擎: 据官方称性能上比sqlite, coredata牛逼,而且使用起来更加简单, 更易入门. 下载地址:https://realm.io/cn/ 使用教程:https://realm.io/docs/objc/

IOS自定义日历控件的简单实现(附思想及过程)

因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑就OK了,下面开始自己从开始到完成的整个过程 1,首先做NSDate类目,扩展一些方法让日期之间转换更加方便 #import <Foundation/Foundation.h> @interface NSDate (LYWCalendar) #pragma mark - 获取日 - (NSInte

UIDatePicker的简单用法

// 初始化UIDatePickerUIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 200, 320, 216)];// 设置时区[datePicker setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];// 设置当前显示时间[datePicker setDate:tempDate animated:YES];// 设置显示最大时间

【学习ios之路:Objective-C】block块语法.NSDate和NSDateFormatter

一.Block块语法 块语法:可以在函数内部定义匿名函数 格式: ^返回值类型(参数列表){函数体}其中返回值类型可以省略 block简单练习: ①.求两个数的最大值 //int (^)(int,int)//block类型 int (^max)(int,int) = ^(int a,int b) {//block的实现体 return a > b ? a : b; }; int value = max(4,6);          printf("%d",value); ②.将一