ios-计算某时间 距离现在的差值

swift 版本   
 static func handleCreateTime(_ createTimeStr : String) -> String {
        
        // 创建时间格式化对象
        let dateFm = DateFormatter()
        dateFm.dateFormat = "EEE MM dd HH:mm:ss Z yyyy"
        dateFm.locale = Locale(identifier: "en")
        
        // 字符串转化成date类型
        
        guard let createTime = dateFm.date(from: createTimeStr) else {
            return ""
        }
        
        // 计算创建时间和当前时间的时间差
        let interval = Int(Date().timeIntervalSince(createTime))
        
        guard interval > 60 else {
            return "刚刚"
        }
        
        // 获取日历对象
        let cdar = Calendar.current
        
        // 判断是不是昨天
        guard !cdar.isDateInYesterday(createTime) else {
            dateFm.dateFormat = "昨天 HH:mm"
            return dateFm.string(from: createTime)
        }
        
        guard interval > 60 * 60 else {
            return "\(interval / 60)分钟前"
        }
        
        guard interval > 60 * 60 * 24 else {
            return "\(interval / 60 / 60)小时前"
        }
        
        // 判读是不是相差一年
        let cmps = cdar.dateComponents([.year], from: createTime, to: Date()).year
        guard  cmps! > 1 else {
            dateFm.dateFormat = "MM-dd HH:mm"
            return dateFm.string(from: createTime)
        }
        
        dateFm.dateFormat = "yyyy-MM-dd HH:mm"
        return dateFm.string(from: createTime)
    }

OC版本 -- 写在 NSString 的分类中
- (NSString *) handleCreateTime {
    
    // 创建时间格式化对象
    NSDateFormatter *dateFm = [[NSDateFormatter alloc] init];
    dateFm.dateFormat = @"EEE MM dd HH:mm:ss Z yyyy";
    dateFm.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
    
    // 字符串转化成date类型
    NSDate *createTime = [dateFm dateFromString:self];
    
    // 计算创建时间和当前时间的时间差
   NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:createTime];
    
    if (interval < 60) {
        return @"刚刚";
    }
    
    // 获取日历对象
    NSCalendar *cdar = [NSCalendar currentCalendar];
    
    // 判断是不是昨天
    if ([cdar isDateInYesterday:createTime]) {
        dateFm.dateFormat = @"昨天 HH:mm";
        return [dateFm stringFromDate:createTime];
    }
    
    if (interval < 60 * 60) {
        return [NSString stringWithFormat:@"%ld分钟前",(NSInteger)interval];
    }
    if (interval < 60 * 60 * 24) {
        return [NSString stringWithFormat:@"%ld小时前",(NSInteger)interval/ 60 / 60];
    }

        // 判读是不是相差一年
    NSDateComponents *cmps = [cdar components:NSCalendarUnitYear fromDate:createTime toDate:[NSDate date] options:0];
    
    if (cmps.year < 1) {
        dateFm.dateFormat = @"MM-dd HH:mm";
        return [dateFm stringFromDate:createTime];
    }
    
    dateFm.dateFormat = @"yyyy-MM-dd HH:mm";
    return [dateFm stringFromDate:createTime];
}

你可能感兴趣的:(ios-计算某时间 距离现在的差值)