美文网首页固予IOSiOS开发知识收录
ios 获取当前时间、一周前时间、比较时间大小、时间戳转换

ios 获取当前时间、一周前时间、比较时间大小、时间戳转换

作者: 来宝 | 来源:发表于2016-07-12 13:15 被阅读6392次

    1、获取当前日期、时间

        NSDate *currentDate = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"YYYY-MM-dd"];
        NSString *currentDateStr = [dateFormatter stringFromDate:currentDate];
    

    2、获取一周前的日期、时间

        NSDate * date = [NSDate date];
        NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        //一周的秒数
        NSTimeInterval time = 7 * 24 * 60 * 60;
        //下周就把"-"去掉
        NSDate *lastWeek = [date dateByAddingTimeInterval:-time];
        NSString *startDate =  [dateFormatter stringFromDate:lastWeek];
    

    3、比较两个日期大小

    //比较两个日期大小
    -(int)compareDate:(NSString*)startDate withDate:(NSString*)endDate{
        
        int comparisonResult;
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-MM-dd"];
        NSDate *date1 = [[NSDate alloc] init];
        NSDate *date2 = [[NSDate alloc] init];
        date1 = [formatter dateFromString:startDate];
        date2 = [formatter dateFromString:endDate];
        NSComparisonResult result = [date1 compare:date2];
        NSLog(@"result==%ld",(long)result);
        switch (result)
        {
                //date02比date01大
            case NSOrderedAscending:
                comparisonResult = 1;
                break;
                //date02比date01小
            case NSOrderedDescending:
                comparisonResult = -1;
                break;
                //date02=date01
            case NSOrderedSame:
                comparisonResult = 0;
                break;
            default:
                NSLog(@"erorr dates %@, %@", date1, date2);
                break;
        }
        return comparisonResult;
    }
    
     int comparisonResult = [self compareDate:startDate withDate:endDate];
    if(comparisonResult >0){
      //endDate 大
    }
    

    4、比较日期差

    //比较两个日期大小
    -(NSInteger)compare:(NSDate *)startTime to:(NSDate *)endTime{
    
        // 当前日历
        NSCalendar *calendar = [NSCalendar currentCalendar];
        // 需要对比的时间数据
        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth
        | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
        // 对比时间差
        NSDateComponents *dateCom = [calendar components:unit fromDate:startTime toDate:endTime options:0];
        NSString *time = [NSString stringWithFormat:@"%ld%ld%ld%ld%ld%ld",dateCom.year,dateCom.month,dateCom.day,dateCom.hour,dateCom.minute,dateCom.second];
        NSLog(@"time---->%@",time);
        
        return [time integerValue];
    }
    

    5、时间和时间戳的转换

       //获取系统时间戳
        NSDate* date1 = [NSDate date];
        NSTimeInterval time1 =[date1 timeIntervalSince1970];
        NSString *timeString = [NSString stringWithFormat:@"%.0f",time1];
        NSLog(@"系统时间戳:%@",timeString);
    
    
        //时间戳转换成时间
        NSTimeInterval time2 =[timeString doubleValue];
        NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:time2];
        NSLog(@"date2 = %@",date2);
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
        [formatter setDateFormat:@"yyyy/MM/dd"];
        NSString *currentTime = [formatter stringFromDate:date2];
        NSLog(@"当前时间:%@",currentTime);
    
        //时间转时间戳
        NSString *timeStr = [NSString stringWithFormat:@"%.0f",[date2 timeIntervalSince1970]];
        NSLog(@"时间戳:%@",timeStr);
    

    相关文章

      网友评论

      • 屈涯:比较日期时候是用的时间戳比较 还是时间比较
      • 37fde910fd00:3、比较两个日期大小
        參考了您的語法,後來發現也許可以有比較簡易的方法
        使用timeIntervalSince1970
        例如:
        date1.timeIntervalSince1970 > date2.timeIntervalSince1970

      本文标题:ios 获取当前时间、一周前时间、比较时间大小、时间戳转换

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