objective-C日期相关操作

来源:互联网 发布:丽得姿黑面膜淘宝 编辑:程序博客网 时间:2024/04/30 09:34

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、比较两个日期大小

-(NSInteger)compareDate:(NSString*)startDate withDate:(NSString*)endDate{

    NSInteger 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;
}


//与当前日期对比( 作为NSString + Extension)
-(NSInteger)compareWithCurrentDate {
    
    if (self.length != 8) {
        RFLog(@"传入的格式错误!");
        return 1000;//本地自定义的错误码
    }
    
    NSInteger comparisonResult;
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyyMMdd"];
    NSDate *date1 = [[NSDate alloc] init];
    NSDate *date2 = [NSDate date];
    date1 = [formatter dateFromString:self];
    NSComparisonResult result = [date1 compare:date2];
    switch (result)
    {
            //date2比date1大
        case NSOrderedAscending:
            comparisonResult = 1;
            break;
            //date2比date1小
        case NSOrderedDescending:
            comparisonResult = -1;
            break;
            //date2=date1
        case NSOrderedSame:
            comparisonResult = 0;
            break;
        default:
            NSLog(@"erorr dates %@, %@", date1, date2);
            break;
    }
    return comparisonResult;
}


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);


转载
文/来宝(简书作者)
原文链接:http://www.jianshu.com/p/23f9c6a0e8f2
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


0 0
原创粉丝点击