• // // ViewController.swift // Dome2test // // Created by 郭文亮 on 2018/11/22. // Copyright © 2018年 finalliang....// import UIKit class ViewController: UIViewController { ... ...
    //
    //  ViewController.swift
    //  Dome2test
    //
    //  Created by 郭文亮 on 2018/11/22.
    //  Copyright © 2018年 finalliang. All rights reserved.
    //
    
    import UIKit
    class ViewController: UIViewController {
        
        //MARK: -
        //MARK: viewDidLoad
        override func viewDidLoad() {
            super.viewDidLoad()
            let dateA = Date()
            let dateB = Date(timeInterval: -60*60*24*1000, since: Date())
            //判断版本号在8以上
            if #available(iOS 8.0, *){
                //初始化一个日历对象 :通常用于处理与时间相关的问题比如比较时间前后 计算日期差
                let calendar = NSCalendar(identifier: .gregorian)
                //根据两个时间点 定义一个日期组建对象 从而快速获得差值
                let components = calendar?.components([.year,.month,.day], from: dateA, to: dateB, options: .matchFirst)
                //日期之间相差的日。月。年 的数量
                print("Day:\(String(describing: components?.day))")
                print("Day:\(String(describing: components?.month))")
                print("Day:\(String(describing: components?.year))")
            }
        }
        
        override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }
    }
    

     

    展开全文
  • IOS根据date计算时间差

    2016-03-31 19:20:30
    IOS根据date计算时间差 IOS开发有时候会有根据两个时间点获取时间差的需求 此处介绍一个获取两个时间差的简单方法 NSDate *oldDate = [NSDate date]; NSDate *currentDate = [NSDate date]; NSLog(@"lastDate =...

    IOS根据date计算时间差

    IOS开发有时候会有根据两个时间点获取时间差的需求

    此处介绍一个获取两个时间差的简单方法

    NSDate *oldDate = [NSDate date];
            NSDate *currentDate = [NSDate date];
            NSLog(@"lastDate == %@",currentDate);
            
            NSCalendar *cal = [NSCalendar currentCalendar];
            unsigned int unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
            NSDateComponents *dateComponents = [cal components:unitFlags fromDate:oldDate toDate:currentDate options:0];
            
            float sec = [dateComponents hour]*3600 + [dateComponents minute]*60  + [dateComponents second];
            NSLog(@"sec ==== %f",sec);


    展开全文
  • 在很多时候,我们要用到计算两个时间段之间的差值,最长见到的就是登录,当然现在有的 APP已经登陆一次就永久化登录,但是还是有APP存在七天不登录或者一个月不登录就重新登录的情况,这个时候就需要我们去判断是否...

    在很多时候,我们要用到计算两个时间段之间的差值,最长见到的就是登录,当然现在有的 APP已经登陆一次就永久化登录,但是还是有APP存在七天不登录或者一个月不登录就重新登录的情况,这个时候就需要我们去判断是否超过期限。废话不多说上代码。

    方法一

    #pragma mark 判断登录是否过期
    
    
    
    -(BOOL)judgeOrderTimer{
        userdefault = NSUserDefault;
        if ([userdefault objectForKey:@"LoginTime"]) {//存在登录时间
            //日期格式
            NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];
            [myFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
            //登录时间字符串
            NSString *orderedTime = [userdefault valueForKey:@"LoginTime"];
            //登录时间1
            NSDate *orderedDate = [myFormatter dateFromString:orderedTime];
            NSTimeZone *zone1 = [NSTimeZone systemTimeZone];
            NSInteger interval1 = [zone1 secondsFromGMTForDate:orderedDate];
            NSDate *localDate1 = [orderedDate dateByAddingTimeInterval:interval1];
            //当前时间2
            NSDate *currentDate = [NSDate date];
            NSTimeZone *zone2 = [NSTimeZone systemTimeZone];
            NSInteger interval2 = [zone2 secondsFromGMTForDate:currentDate];
            NSDate *localDate2 = [currentDate dateByAddingTimeInterval:interval2];
            // 时间2与时间1之间的时间差(秒)
            double intervalTime = [localDate2 timeIntervalSinceReferenceDate] - [localDate1 timeIntervalSinceReferenceDate];
            int iTime = (int)intervalTime;
            if (iTime>=900(你想要的时间,(7天或者一个月),单位.秒)) {//过期
                return YES;
            }else{
                return NO;//未过期
            };
        }else{//不存在登录时间
            return NO;
        }
    }
    方法二
    #pragma mark 获取本机当前时间,与登陆时间进行对比,>7天重新登录
    -(BOOL)eventComparison{
        if ([userdefault objectForKey:@"LandingTime"]) {//存在登录时间
      //当前时间2
            NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];
            NSDate *myDate = [NSDate date];
            [myFormatter setDateFormat:@"yyyy年MM月dd日hh:mm"];
            NSCalendar *cal = [NSCalendar currentCalendar];
            unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
     //做差值
            NSDateComponents *d = [cal components:unitFlags fromDate:[userdefault objectForKey:@"LandingTime"] toDate:myDate options:0];
            long sec = [d hour]*3600+[d minute]*60+[d second];
            if (sec>=604800) { //过期
                 return NO;
            }else{//不存在登录时间
                 return NO;
            }
        }else{//不存在登录时间
            return NO;
        }
    }
     

     

    展开全文
  • 前段时间做的一个集助活动,其中有一个倒计时,需要计算两个时间节点之间的差值,然后转化为时分秒,我用的是将两个时间节点传入new Date(),然后getTime()计算差值,代码大致如下: // 仅是两个时间点是同一天的...

    前段时间做的一个项目中有一个倒计时,需要计算两个时间节点之间的差值,然后转化为时分秒,我用的是将两个时间节点传入new Date(),然后getTime()计算差值,代码大致如下:

    // 仅是两个时间点是同一天的简单换算
    function timeFormat(newTimeStr, oldTimeStr){
        var newTime = new Date(newTimeStr).getTime();
        var oldTime = new Date(oldTimeStr).getTime();
        var diffTime = newTime - oldTime;
        if(diffTime < 0){
            return "请确保参数顺序";
        }
        var hh = Math.floor(diffTime / 60 / 60 / 1000);
        hh = hh < 10 ? "0" + hh : hh;
        diffTime -= hh * 60 * 60 * 1000;
        var mm = Math.floor(diffTime / 60 / 1000);
        mm = mm < 10 ? "0" + mm : mm;
        diffTime -= mm * 60 * 1000;
        var ss = Math.floor(diffTime / 1000);
        return hh + ":" + mm + ":" + ss;
    }
    timeFormat("2018-05-11 15:09:09", "2018-05-11 12:10:10");
    

    上面代码在Google浏览器正常,在安卓手机里面也正常,但是在iphone内一直出问题,我在网上查了查,大致意思是Safari不支持"2018-05-11 15:10:10"这种时间格式的new Date()参数,所以我写了下面这个例子来试试:
    可点击此处查看,或者是直接用手机扫描下面的二维码:二维码

    例子代码如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>ios端关于Date()格式的兼容</title>
    </head>
    
    <body>
        <script>
            alert("new Date('2018-05-11 12:00:00').getMonth() :" + new Date("2018-05-11 12:00:00").getMonth());
            alert("new Date('2018/05/11 12:00:00').getMonth() :" + new Date("2018/05/11 12:00:00").getMonth());
            var time = '2018-05-11 12:00:00';
            var arr = time.split(/[- : \/]/);
            var d = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]);
            alert("new Date(" + arr[0] + "," + (arr[1] - 1) + "," + arr[2] + "," + arr[3] + "," + arr[4] + "," + arr[5] + ") : " + d.getMonth());
        </script>
    </body>
    
    </html>
    

    例子是为了试一下浏览器的new Date()对’2018-05-11 12:00:00’和’2018/05/11 12:00:00’时间格式的兼容性。

    如果你用的是Safari,那么你应该会看到第一个的提示是:

    new Date(‘2018-05-11 12:00:00’).getMonth() :NAN

    说明其不兼容’2018-05-11 12:00:00’这种时间格式,但是我们为了兼容,所以我将上面的第一段代码更改为如下:

    // 仅是两个时间点是同一天的简单换算
    function timeFormat(newTimeStr, oldTimeStr){
        newTimeStr = newTimeStr.replace(/-/g, "/"); 
        oldTimeStr = oldTimeStr.replace(/-/g, "/");
        var newTime = new Date(newTimeStr).getTime();
        var oldTime = new Date(oldTimeStr).getTime();
        var diffTime = newTime - oldTime;
        if(diffTime < 0){
            return "请确保参数顺序";
        }
        var hh = Math.floor(diffTime / 60 / 60 / 1000);
        hh = hh < 10 ? "0" + hh : hh;
        diffTime -= hh * 60 * 60 * 1000;
        var mm = Math.floor(diffTime / 60 / 1000);
        mm = mm < 10 ? "0" + mm : mm;
        diffTime -= mm * 60 * 1000;
        var ss = Math.floor(diffTime / 1000);
        ss = ss < 10 ? "0" + ss : ss;
        return hh + ":" + mm + ":" + ss;
    }
    timeFormat("2018-05-11 15:09:09", "2018-05-11 12:10:10");
    

    或者是直接将2018-05-11 15:09:09时间格式转换为2018/05/11 15:09:09 就可以兼容所有浏览器了。代码如下:

    new Date('2018-05-11 12:00:00'.replace(/-/g, '/'))
    

    如此就兼容所有的浏览器了。关于Date的详细信息可查看:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

    展开全文
  • iOS 比较两个时间差

    2017-06-21 15:07:25
    - (NSString *)intervalFromLastDate: (NSString *) dateString1 toTheDate:(NSString *) dateString2 {  NSArray *timeArray1=[dateString1 componentsSeparatedByString:@"."];  dateString1=

    - (NSString *)intervalFromLastDate: (NSString *) dateString1  toTheDate:(NSString *) dateString2

    {

        NSArray *timeArray1=[dateString1 componentsSeparatedByString:@"."];

        dateString1=[timeArray1 objectAtIndex:0];

        NSArray *timeArray2=[dateString2 componentsSeparatedByString:@"."];

        dateString2=[timeArray2 objectAtIndex:0];

        NSLog(@"%@.....%@",dateString1,dateString2);

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

        [date setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

        NSDate *d1=[date dateFromString:dateString1];

        

        NSTimeInterval late1=[d1 timeIntervalSince1970]*1;

        NSDate *d2=[date dateFromString:dateString2];

        

        NSTimeInterval late2=[d2 timeIntervalSince1970]*1;

        NSTimeInterval cha=late2-late1;

        NSString *timeString=@"";

        NSString *house=@"";

        NSString *min=@"";

        NSString *sen=@"";

        

        sen = [NSString stringWithFormat:@"%d", (int)cha%60];

        //        min = [min substringToIndex:min.length-7];

        //   

        sen=[NSString stringWithFormat:@"%@", sen];

        min = [NSString stringWithFormat:@"%d", (int)cha/60%60];

        //        min = [min substringToIndex:min.length-7];

        //   

        min=[NSString stringWithFormat:@"%@", min];

        //    小时

        house = [NSString stringWithFormat:@"%d", (int)cha/3600];

        //        house = [house substringToIndex:house.length-7];

        house=[NSString stringWithFormat:@"%@", house];

        timeString=[NSString stringWithFormat:@"%@:%@:%@",house,min,sen];

        

        //    return timeString;

        return [NSString stringWithFormat:@"%f",cha];

    }


    展开全文
  • 最近的项目中,由于写服务器的大兄弟总是爱将日期以字符串的形式传给前端,而前端要显示两个日期的差值,所以自己写了一个工具方法来进行转换,写下来方便自己以后翻阅,同时也分享给大家。 代码如下 -(NSString*)...
  • 一、获取时间1.获取当前时间+ (NSString *)getCurrentTime { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:...
  • iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大多零零散散,很多资料并没有说明其中问题。这里集中总结一下,以便于以后查阅和供大家参考。有我...
  • //比较两个时间的时间差 + (NSString *)compareTwoDate:(NSString *)begain end:(NSString *)end{ // 1.将时间转换为date NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat =...
  • NSDate 是一个日期的类 创建一个date *date 获取的时间无论是在哪个...NSDate *date =[NSDate date ]; NSLog(@"%@", date); // 结果:2015-07-23 16:04:00.431 OC07_NSDate[1430:100568] 2015-07-23 08:04:00 +0000
  • iOS计算两个时间差

    2018-10-15 16:04:35
    iOS计算两个时间差 //获取两个date直接的时间差 (void)getBabyDetailAge:(long long )time { NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:time]; NSDate *date2 = [NSDate date]; NSCalendar *...
  • iOS 时间比较大小

    2016-09-14 17:39:32
    转载:http://blog.csdn.net/sunnyboy9/article/details/49889923 /*******  设置两个时间差为固定值  *******/ ... NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalen
  • 1、标准时间也叫格林尼治时间,北京所在的...2 、iOS系统中直接生成的时间都是格林尼治时间,比当前时间(北京时间)小八个小时。 通过Date.init()生成的时间为当前时区的时间所对应的格林尼治时间 通过UIDateP...
  • 有两种方式可以实现 方式一: // 统一格式 NSDateFormatter *formater = [[NSDateFormatter alloc] init]; [formater setDateFormat:@"yyyy-MM-dd HH:mm"]; // create NSArray *createTimeArray = [create
  • iOS 之NSDate的Category

    2017-09-12 19:36:19
    iOS 之NSDate的Category 判断日期是是否是今年?今天? NSDate+Extension.h ...//比较from和self的时间差值 - (NSDateComponents *)deltaFrom:(NSDate *)from; //是否为今年 - (BOOL)isThisYear; //是否为今天
  • iOS关于时间的处理

    2016-12-16 09:51:09
    转自:iOS关于时间的处理做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单。我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制...
  • iOS - NSDate计算时间差

    2019-04-18 09:55:21
    NSDate *date1 = [NSDate date]; NSTimeZone *zone1 = [NSTimeZone systemTimeZone]; NSInteger interval1 = [zone1 secondsFromGMTForDate:date1]; NSDate *localDate1 = [date1 dateByAddingTimeInterval:in
  • // // HQTimeTool.m // Doing // // Created by hq on 16/10/23. // Copyright © 2016年 hanqing. All rights reserved. // #import "HQTimeTool.h" ...#define HQDateFormatter @"yyyyMMddHHmmss
1 2 3 4 5 ... 20
收藏数 669
精华内容 267