zoukankan      html  css  js  c++  java
  • iOS时间与日期处理

    NSDate:日期相关的类

    NSTimeInterval:时间间隔相关的类

    NSDateFormatter:时间格式器相关的类

       学习本节要掌握的知识点:1.日期转时间戳

                                          2.日期转字符串 

                                          3.日期转指定格式的字符串(获得星期几,获得年月日格式显示等等)

                                          4.时间戳转日期

                                          5.字符串转日期

                                          6.指定格式字符串转日期

                                          7.时间的推算

    #pragma mark ======NSDate:日期相关的类 GTM(国际标准时间)==========

    - (void)viewDidLoad{

          [super viewDidLoad];

    //初始化,和一般的数据初始化一样(获取国际的标准时间,和我们服务器的时间相差8个时区)

         NSDate *date = [NSDate date];

        NSLog(@"%@",date);

    //打印结果如下:

    2016-01-06 14:34:24.964 时间与日期处理[3775:444683] 2016-01-06 06:34:24 +0000

    //另一种初始化方式

        /*

         NSTimeInterval: 时间间隔 单位是秒

         

         */

    //   这行代码的意思是从现在开始过了多少秒, 过去的时间(-)未来的时间(+)

    //  获取当前的日期和时间

        NSTimeInterval interval = 60*60*8;

        NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:(interval)];

        NSLog(@"%@",date1);

    // 获取10天以前的日期和时间

        NSTimeInterval interval1 = interval-60*60*24*10;

        NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:interval1];

        NSLog(@"%@",date2);

        

    #pragma mark=======时间戳============

    // 时间戳:就是一个时间的标志,是从1970年到现在的一个时间间隔(或者说是字符串)

    //       它可以表示一个唯一的时间标识

    // 从1970开始计算

     NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:1452044054];//获得一个时间戳 所标示的日期

        NSLog(@"%@",date3);

        

    #pragma mark=====日期怎么转换成时间间隔=======

    //日期转换成时间间隔——>1.可以获得时间戳(指的是从1970——现在)

    //                  2.可以获得两个日期之间的时间间隔

    // 1⃣️. 获得两个日期之间的时间间隔

    //- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate

    // 1452044054这个时间戳 对应的日期 与 当前时间的时间间隔

        NSTimeInterval timeInterval =fabs([date3 timeIntervalSinceDate:[NSDate date]]);

        NSLog(@"%f",timeInterval);

        

    //计算两个时间间隔相差多少小时多少分多少秒

        int h = timeInterval/(60*60);

        NSLog(@"两个日期相差%d小时",h);

        int s = ((int)timeInterval)%(60*60)/60;

        NSLog(@"相隔%d分",s );

        int m = ((int)timeInterval)%(60*60)%60;

        NSLog(@"相隔%d秒",m);

      /*

       取绝对值的方法:不区分 正负数 (无符号)

       abs(int)

       fabs(double)

       fabsf(float)

       

       */

    #pragma mark=======日期转时间戳===========

    // 2⃣️. 从现在到1970年的时间间隔

    // 日期转时间戳

        NSDate *curDate = [NSDate date];

        

        NSLog(@"%f",curDate.timeIntervalSince1970);

        

        NSString *string = [NSString stringWithFormat:@"%d",(int)curDate.timeIntervalSince1970];

        NSLog(@"%@",string);

        

    #pragma mark==========两个日期之间的比较===========

    //比较1451047216 和 1451847216

    //1.将这两个时间戳转换成日期

    NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:1451047216];

    NSDate *date5 = [NSDate dateWithTimeIntervalSince1970:1451847216];

    //2.开始比较

    // 比较date4是不是比date5早——>会返回一个比较早的日期

      NSDate *date6 = [date4 earlierDate:date5];

        NSLog(@"比较早的日期%@",date6);

    //比较两个日期谁比谁晚

        NSDate *date7 = [date4 laterDate:date5];

        NSLog(@"%@",date7);

    //  比较两个日期 是不是相同 ——>返回值BOOL类型

        BOOL result = [date4 isEqualToDate:date5];

        NSLog(@"%d",result);

    //=========日期格式器==========

    //    1⃣️初始化

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

    //  ******格式的属性*********

      /*  y  年

        M  年中的月份

        D  当天是今年的第多少天

        d  月份中的天数

        F  月份中的周数

        E  星期几

        a  Am/pm

        H  一天中的小时数(0-23)

        k  一天中的小时数(1-24)

        K  am/pm 中的小时数(0-11)  Number  0

        h  am/pm 中的小时数(1-12)  Number  12

        m  小时中的分钟数  Number  30

        s  分钟中的秒数  Number  55

        S  毫秒数  Number  978

        z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00

        Z  时区  RFC 822 time zone  -0800

    */

        formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss E";

        

        

        

    //    ⚠️大写的M表示月,小写的m表示分,它们所代表的意义不一样

    //    ⚠️大写的HH 表示24小时制的

    //    ⚠️小写的hh 表示12小时制的

    //    ⚠️大写的SS 表示 毫秒

    //    ⚠️小写的ss 表示 秒

        

    //把日期转换成字符串

    //    1.必须有日期

        NSDate *now = [NSDate date];

        

    //    2.使用日期转换器进行转换

        

        NSString *dateSting = [formatter stringFromDate:now];

        NSLog(@"%@",dateSting);

        

    // ==========把字符串转换成日期============

        NSDate *returnDate = [formatter dateFromString:dateSting];

        NSLog(@"%@",returnDate);

        

    // ===========把时间戳转换成想要的格式========

    //  把1451847216 时间戳转换成 某年某月某日 某周几 上下午

    //  把时间戳转换成日期

        NSString *timeStemp = @"1451847216";

        NSDate *date8 = [NSDate dateWithTimeIntervalSince1970:[timeStemp doubleValue]];

        

        NSLog(@"%@",date8);

    //  初始化 日期格式器 并指定格式

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

    //  某年某月某日 某周几 上下午   日期格式器的格式

        Formatter.dateFormat = @"yyyy年MM月dd日 E a";

        

    // 使用格式器开始转换

        NSString *returnString = [Formatter stringFromDate:date8];

        

        NSLog(@"%@",returnString);

        

    //=============周一转换成星期一=============

        

        

        

    }

    /*

     作业:在昨天的基础之上,添加一个创建日期的字段

     要求:日期要用时间戳 的形式 存储

     在添加内容的时候 自动保存到 数据库

     */

    /*

     1、NSDate 初始化

     NSDate *date = [NSDate date];//当前时间(国际的标准时间)

     NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:interval];//获得一个时间间隔 到现在的日期(用于推算 前面 或 后面的时间) 过去的时间间隔(-) 将来的时间间隔(+)

     NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:1452044015];//获得 一个时间戳 所表示的日期

     2、NSDate -> 时间戳 (1970-new) -> 字符串表示

     NSDate有一个属性timeIntervalSince1970 -> 可以获得到 (1970 - new) 一个时间间隔 ->转成字符串就是表示日期的时间戳

     NSString *timeStamp = [NSString stringWithFormat:@"%d",(int)curDate.timeIntervalSince1970];

     3、两个日期之间的比较

     - (NSDate *)earlierDate:(NSDate *)anotherDate;//比较两个日期 谁早 返回早的日期

     - (NSDate *)laterDate:(NSDate *)anotherDate;//比较两个日期 谁晚 返回晚的日期

     - (BOOL)isEqualToDate:(NSDate *)otherDate;//比较两个日期是否相同 返回BOOL

     */

    /*

     NSDateFormatter 把日期 转换成 需要的格式

     格式化日期的 格式 用字符串 表示

     @"yyyy-MM-dd HH:mm:ss"

     @"2016-01-06 11:06:30";

     作用:

     1、日期 转换成 字符串(指定格式)

     2、字符串(指定格式) 转换成 日期

     *****会把GTM 转换成 系统时间

     1、初始化

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

     2、设置日期格式器的 格式 -> 用字符串表示

     dateFormatter.dateFormat = @"yyyy年MM月dd日 E a";

     3、使用格式器 转换

     (1)把日期 转成 字符串

     NSString *dateS = [dateFormatter stringFromDate:date20];

     (2)把字符串 转换成 日期

     NSDate *date10 = [formatter dateFromString:dateString];

     */

     

  • 相关阅读:
    pytorch和tensorflow
    创建用户
    linux 软件安装
    python 常见错误集锦
    Anaconda常规用法
    两个电脑之间文件快穿-基于用一个局域网和python的使用
    python-pip使用整理
    时间序列 -prophet
    SQL习题集锦
    取色器RGB转换htlm
  • 原文地址:https://www.cnblogs.com/penglisu/p/5105559.html
Copyright © 2011-2022 走看看