当前位置: 首页 > news >正文

NSDate

1.NSDate基本概念

  • NSDate可以用来表示时间, 可以进行一些常见的日期\时间处理

  • 一个NSDate对象就代表一个时间

  • [NSDate date]返回的就是当前时间

    NSDate *now = [NSDate date];
    NSLog(@"now = %@", now);
     // 设置转换后的目标日期时区
     NSTimeZone *zone = [NSTimeZone systemTimeZone];
     // 得到源日期与世界标准时间的偏移量
     NSInteger interval = [zone secondsFromGMTForDate: date];
     NSLog(@"interval = %lu", interval);
     // 在当前时间基础上追加时区差值
     now = [now dateByAddingTimeInterval:interval];
     NSLog(@"%@", date);

2.格式化日期

  • NSDate -> NSString
    // 1.创建时间
    NSDate *now = [NSDate date];
    // 2.创建时间格式化
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    // 3.指定格式
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // 4.格式化时间
    NSString *str = [formatter stringFromDate:now];
    NSLog(@"%@", str);
  • NSString -> NSDate
    NSString *str = @"2015-06-28 19:53:24";
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *date = [formatter dateFromString:str];
    NSLog(@"%@", date);

3.日期时间对象

  • 结合NSCalendar和NSDate能做更多的日期\时间处理

  • 获得NSCalendar对象

NSCalendar *calendar = [NSCalendar currentCalendar];
  • 获得年月日
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;
    NSDate *date = [NSDate date];
    // 1.创建日历对象
    NSCalendar *calendar = [NSCalendar currentCalendar];
    // 2.利用日历对象获取年月日时分秒
    NSCalendarUnit type = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents *cmps =[calendar components:type fromDate:date];
    NSLog(@"year = %lu", cmps.year);
    NSLog(@"month = %lu", cmps.month);
    NSLog(@"day = %lu", cmps.day);
    NSLog(@"hour = %lu", cmps.hour);
    NSLog(@"minute = %lu", cmps.minute);
    NSLog(@"second = %lu", cmps.second);
    NSLog(@"date = %@", date);
  • 比较两个日期的差距
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts;
    // 1.确定时间
    NSString *time1 = @"2015-06-23 12:18:15";
    NSString *time2 = @"2015-06-28 10:10:10";
    // 2.将时间转换为date
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *date1 = [formatter dateFromString:time1];
    NSDate *date2 = [formatter dateFromString:time2];
    // 3.创建日历
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit type = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    // 4.利用日历对象比较两个时间的差值
    NSDateComponents *cmps = [calendar components:type fromDate:date1 toDate:date2 options:0];
    // 5.输出结果
    NSLog(@"两个时间相差%ld年%ld月%ld日%ld小时%ld分钟%ld秒", cmps.year, cmps.month, cmps.day, cmps.hour, cmps.minute, cmps.second);

 

转载于:https://www.cnblogs.com/xufengyuan/p/6647984.html

相关文章:

  • 1
  • 电子测量
  • JS实现的图片预览功能
  • docker 安装centos 7
  • 深入理解计算机系统之存储器层次结构学习笔记
  • hihocoder offer收割编程练习赛12 C 矩形分割
  • css 样式表 基础 样式
  • 函数装饰器
  • 第二百一十节,jQuery EasyUI,SearchBox(搜索框)组件
  • UVa 10917 林中漫步
  • Ruby 写文件
  • Python学习日记之读取中文目录
  • STL List::sort() 解析
  • 饥饿鲨鱼进化-破解篇
  • 内存操作函数memcpy和memmove详解
  • CSS盒模型深入
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JavaScript DOM 10 - 滚动
  • JavaScript 基本功--面试宝典
  • java多线程
  • Objective-C 中关联引用的概念
  • overflow: hidden IE7无效
  • Solarized Scheme
  • webgl (原生)基础入门指南【一】
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 从0到1:PostCSS 插件开发最佳实践
  • 高度不固定时垂直居中
  • 嵌入式文件系统
  • 算法系列——算法入门之递归分而治之思想的实现
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $().each和$.each的区别
  • (2)MFC+openGL单文档框架glFrame
  • (2015)JS ES6 必知的十个 特性
  • (function(){})()的分步解析
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (转)3D模板阴影原理
  • (转)http-server应用
  • .libPaths()设置包加载目录
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net Redis的秒杀Dome和异步执行
  • .net 使用ajax控件后如何调用前端脚本
  • .net6+aspose.words导出word并转pdf
  • .NET企业级应用架构设计系列之技术选型
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [android] 请求码和结果码的作用
  • [BZOJ5250][九省联考2018]秘密袭击(DP)