將日期轉成具體的幾分鐘前,幾小時前,昨天。。。

+ (NSString *)formatShowDateTime:(NSDate *)needDate
{
    if (needDate == nil) {
        
        return @"";
    }
    
    @try {
        //實例化一個NSDateFormatter對象
        
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        
        NSDate * nowDate = [NSDate date];
        
        /////  將需要轉換的時間轉換成 NSDate 對象
        /////  取當前時間和轉換時間兩個日期對象的時間間隔
        /////  這里的NSTimeInterval 并不是對象,是基本型,其實是double類型,是由c定義的:  typedef double NSTimeInterval;
        NSTimeInterval time = [nowDate timeIntervalSinceDate:needDate];
        
        //// 再然后,把間隔的秒數折算成天數和小時數:
        
        NSString *dateStr = @"";
        
        if (time<=60) {  //// 1分鐘以內的
            dateStr = @"1分鐘前";
        }else if(time<=60*60){  ////  一個小時以內的
            
            int mins = time/60;
            dateStr = [NSString stringWithFormat:@"%d分鐘前",mins];
            
        }else if(time<=60*60*24*2){   //// 在兩天內的
            
            [dateFormatter setDateFormat:@"YYYY/MM/dd"];
            NSString * need_yMd = [dateFormatter stringFromDate:needDate];
            NSString *now_yMd = [dateFormatter stringFromDate:nowDate];
            
            [dateFormatter setDateFormat:@"HH:mm"];
            if ([need_yMd isEqualToString:now_yMd]) {
                //// 在同一天
                //                dateStr = [NSString stringWithFormat:@"今天 %@",[dateFormatter stringFromDate:needDate]];
                dateStr = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:needDate]];
            }else{
                ////  昨天
                //                dateStr = [NSString stringWithFormat:@"昨天 %@",[dateFormatter stringFromDate:needDate]];
                [dateFormatter setDateFormat:@"dd"];
                NSString *beforeYesDay = [dateFormatter stringFromDate:needDate];
                NSString *yesDay = [dateFormatter stringFromDate:nowDate];
                NSInteger num = [yesDay integerValue] - [beforeYesDay integerValue];
                if (num == 1) {
                    dateStr = @"昨天";
                }else{
                    [dateFormatter setDateFormat:@"MM月dd日"];
                    dateStr = [dateFormatter stringFromDate:needDate];
                }
            }
        }else {
            
            [dateFormatter setDateFormat:@"yyyy"];
            NSString * yearStr = [dateFormatter stringFromDate:needDate];
            NSString *nowYear = [dateFormatter stringFromDate:nowDate];
            
            if ([yearStr isEqualToString:nowYear]) {
                ////  在同一年
                [dateFormatter setDateFormat:@"MM月dd日"];
                dateStr = [dateFormatter stringFromDate:needDate];
            }else{
                [dateFormatter setDateFormat:@"yyyy年MM月dd日"];
                dateStr = [dateFormatter stringFromDate:needDate];
            }
        }
        
        return dateStr;
    }
    @catch (NSException *exception) {
        return @"";
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容