zoukankan      html  css  js  c++  java
  • iOS-NSDate

    一.概念解释

    1.什么是NSTimeZone?

    NSTimeZone:时区是一个地理名字,是为了克服各个地区或者国家之间在时间上的混乱设定的。

    1).GMT:0:00格林威治标准时间;UTC +00:00校准的全球时间;CCD +08:00中国的标准时间;

    2).任何时区都以GMT为基准,即任何NSTimeZone对象所代表的时区都是相对于GMT的,这里的相对性是NSTimeZone中的一个重要的属性,我们称之为当前时区相对于GMT的偏移量,一旦知道了一个偏移量,便可以确定一个时区。在iOS中,偏移量是以"秒"为单位的。

    3).iOS中的时间类NSDate中存储的时间,都是相对于GMT的,我们使用NSDate的时候,会根据App的时区设置返回与时区对应的数据。

    4).iOS中的时区表示方法:GMT+0800 GMT-0800;(+:东区  -:西区; 前两位是小时数,后两位是分钟数)。GMT+0830意思是比GMT早8小时外加30分钟的时区。

    2.NSDate类是以GTM时间为标准的。

    二.获取此时此地的时间,并以规定的格式显示

        NSDate *  dateNow=[NSDate date];
        
        NSDateFormatter  *dateformatter = [[NSDateFormatter alloc] init];
        
        [dateformatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
        
        NSString *locationString = [dateformatter stringFromDate:dateNow];
        
        NSLog(@"locationString:%@",locationString);

    说明:

         1.YYYY(年)/MM(月)/dd(日) hh(时):mm(分):ss(秒) SS(毫秒)

         需要用哪个的话就把哪个格式加上去。

         2.值得注意的是,如果想显示两位数的年份的话,可以用”YY/MM/dd hh:mm:ss SS”,两个Y代表两位数的年份。

         3.而且大写的M和小写的m代表的意思也不一样。“M”代表月份,“m”代码分钟

         4.“HH”代表24小时制,“hh”代表12小时制

    三.计算两个时间点相隔时间

        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
        
        NSString * startTimeStr = @"2016-01-21 18:40:20";
        NSString * endTimeStr = @"2016-01-22 18:40:20";
        NSDate * date1 = [dateFormatter dateFromString:startTimeStr];
        NSDate * date2 = [dateFormatter dateFromString:endTimeStr];
        
        //获取两个NSDate类型的时间区间(以秒为单位)
        NSTimeInterval time = [date2 timeIntervalSinceDate:date1];
        NSLog(@"%f",time);
        //计算相隔天数
        int days = (time) / (24 * 60 * 60);
        NSLog(@"days = %d",days);
        
        //计算相隔小时数
        int hours = (time) / (60 * 60);
        NSLog(@"hours = %d",hours);
        
        //计算相隔分钟数
        int mintues = (time) / (60);
        NSLog(@"mintues = %d",mintues);
        
        //计算相隔秒数
        int seconds = (time) / (1);
        NSLog(@"seconds = %d",seconds);

    四.判断两个时间的关系:相同,大于,小于。

        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
        
        NSString * startTimeStr = @"2016-01-21 18:40:20";
        NSString * endTimeStr = @"2016-01-22 18:40:20";
        NSDate * date1 = [dateFormatter dateFromString:startTimeStr];
        NSDate * date2 = [dateFormatter dateFromString:endTimeStr];
        
        NSComparisonResult result = [date2 compare:date1];
        /**NSComparisonResult
         NSOrderedAscending      降序
         NSOrderedSame           相等
         NSOrderedDescending     升序
         */
        if (result == NSOrderedDescending)
        {
            NSLog(@"date2 > date1");
        }
        else
        {
            NSLog(@"date2 < date1");
        }
    你的一次推荐就是对我莫大的支持。感觉不错,给个推荐或者评论吧。
  • 相关阅读:
    C# Array.Sort 省内排序
    Centos7开机启动tomcat8
    使用GeoWebCache发布ArcGIS切片地图(实现高清电子地图)
    获取经纬度之间距离的Java工具类
    centos7上安装rar解压软件
    GeoServer之发布Geotiff存在的问题
    $GPRMC解析
    如何在IDEA单元测试中使用Scanner获取输入内容
    GeoServer修改使用内存
    Github无法访问解决办法
  • 原文地址:https://www.cnblogs.com/mancong/p/5149329.html
Copyright © 2011-2022 走看看