iOS时间相关

作者: NapoleonY | 来源:发表于2018-01-05 22:00 被阅读17次

时间

  1. GMT:格林尼治时间
    理论上讲,格林尼治时间的正午是太阳横穿格林尼治子午线的时间,作为世界各地区交流的的标准时间使用。由于地球转速改变,导致GMT不再作为标准时间使用
  2. UTC:协调世界时,由原子钟提供,作为现在的标准时间使用。

iOS时间相关

  • NSDate以UTC为参考,代表从2001年1月1号00:00:00到当前时刻的时间间隔。编程语言描述时间时,通常都是以一个时间点为参考时间,加上时间的偏移量,得到另一个时间点

    //[NSDate date]获取本地当前时间 
    double time = [[NSDate date] timeIntervalSinceReferenceDate];
    //537110663.983146秒,
    //537109844.576690/86400/365=17.031667年
    //[[NSDate date] timeIntervalSince1970];
    

    timeIntervalSinceReferenceDate表示当前时刻相对于参考时间的时间间隔。上述代码中86400为1天的秒数,17刚好是从2001年到现在的年数。
    要将NSDate转换为具体的时间格式,需要借助于NSDateFormatterNSTimeZone

    • NSDateFormatter:NSDate借助于NSDateFormatter以特定的格式输出。
    • NSTimeZone:计算某个地区的时间(上海/纽约等)
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
    [dateFormatter setTimeZone:timeZone];
    NSString *dateStr = [dateFormatter stringFromDate:[NSDate date]];
    //2018-01-08 21:48:26
    

    备注:NSDate受手机时间系统控制,即用户修改了手机的时间后,NSDate的输出也会改变,因此NSDate并不可靠

  • CFAbsoluteTimeGetCurrent()
    类似于NSDate,只不过参考时间为GMT 2001年1月1号 00:00:00,单位为秒
    备注:CFAbsoluteTimeGetCurrent()也受到手机时间系统控制,用户修改手机时间后,输出也会改变,也不可靠

  • mach_absolute_time()
    返回CPU已经运行的时钟周期的数量,由于时钟周期是匀速变化的,因此可以将时钟周期转换为时间,秒、纳秒等。
    备注:当手机重启,CPU的时钟周期会重置,手机休眠,时钟周期也会暂停计数。因此,mach_absolute_time()不会受到系统时间影响,但是会受到手机的休眠或重启影响

  • CACurrentMediaTime()
    将上面mach_absolute_time()返回的时钟周期转换成秒数。

     #import <Quartz/Quartz.h>
     double timeNew = CACurrentMediaTime();
     //20217.420085为设备开机到当前时刻的秒数,不包括中间设备休眠的时间
    

获取当前时间,精确到毫秒

- (void)getcurrentTimeMS {
    NSDateFormatter *timeFormtter = [[NSDateFormatter alloc] init];
    [timeFormtter setDateFormat:@"YYYY-MM-dd hh:mm:ss:SSS"];
    NSString *dateNow = [timeFormtter stringFromDate:[NSDate date]];
    NSString *timeNow = [[NSString alloc] initWithFormat:@"%@", dateNow];
    NSLog(@"time:%@", timeNow);
}

参考

  1. iOS关于时间的处理

相关文章

  • iOS时间相关

    时间 GMT:格林尼治时间理论上讲,格林尼治时间的正午是太阳横穿格林尼治子午线的时间,作为世界各地区交流的的标准时...

  • iOS - 时间、NSDateFormatter相关

    使用NSDateFormatter进行NSDate与NSString之间的转化 NSDateFormatter有下...

  • ios 获取时间相关

    //获取当地时间 //将字符串转成NSDate类型 //传入今天的时间,返回明天的时间

  • iOS之时间相关

    在iOS中,我们处理时间的时候,往往会使用到NSDate这个类,但是有的时候我们或许也会使用到NSCalendar...

  • iOS 时间转化相关

    将年月日转化为字符串(eg:2012 2 3 -> 20120203) 判断年月日是否为周一 年月日转化为date...

  • iOS 时间相关方法

    NSDate转NSString NSString转NSDate 相同日期比较 获取安全方法中时间戳(长度:4)

  • 时间、时间戳相关小结 - iOS

    项目中难免会与时间打交道,故此次围绕时间展开做了一些日常使用的小结;如下 code 中也是围绕一些日常开发中较为常...

  • iOS设计与架构资料

    Trip-to-iOS-Design-Patterns iOS 设计模式相关资料整理随着写代码时间变长,业务逻辑越...

  • IOS 时间相关的笔记

    时间处理是 APP 的中一个常用的功能 获取时间戳 获取几分钟前的时间等

  • Flutter-02 目录介绍

    一、目录介绍 android:android平台相关代码 ios:ios平台相关代码 lib:flutter相关代...

网友评论

    本文标题:iOS时间相关

    本文链接:https://www.haomeiwen.com/subject/pifenxtx.html