一个显示日期的iOS工具类

jopen 10年前

一个显示日期的工具类

.h文件

    #import <Foundation/Foundation.h>                @interface TimeUtil : NSObject                        + (NSString*)getTimeStr1:(long long)time;                        +(NSString*) getTimeStrStyle1:(long long)time;        + (NSString*)getTimeStr1Short:(long long)time;                +(NSString*) getTimeStrStyle2:(long long)time;                +(int)dayCountForMonth:(int)month andYear:(int)year;                +(BOOL)isLeapYear:(int)year;                @end  
.m文件
    #import "TimeUtil.h"                @implementation TimeUtil                        + (NSString*)getTimeStr:(long) createdAt        {            // Calculate distance time string            //            NSString *timestamp;            time_t now;            time(&now);                        int distance = (int)difftime(now, createdAt);            if (distance < 0) distance = 0;                        if (distance < 60) {                timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "second ago" : "seconds ago"];            }            else if (distance < 60 * 60) {                distance = distance / 60;                timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "minute ago" : "minutes ago"];            }            else if (distance < 60 * 60 * 24) {                distance = distance / 60 / 60;                timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "hour ago" : "hours ago"];            }            else if (distance < 60 * 60 * 24 * 7) {                distance = distance / 60 / 60 / 24;                timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "day ago" : "days ago"];            }            else if (distance < 60 * 60 * 24 * 7 * 4) {                distance = distance / 60 / 60 / 24 / 7;                timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "week ago" : "weeks ago"];            }            else {                static NSDateFormatter *dateFormatter = nil;                if (dateFormatter == nil) {                    dateFormatter = [[NSDateFormatter alloc] init];                    [dateFormatter setDateStyle:NSDateFormatterShortStyle];                    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];                }                                NSDate *date = [NSDate dateWithTimeIntervalSince1970:createdAt];                 timestamp = [dateFormatter stringFromDate:date];            }            return timestamp;        }                + (NSString*)getTimeStr1:(long long)time        {            NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];            NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d %02d:%02d",[component year],[component month],[component day],[component hour],[component minute]];            return string;        }                + (NSString*)getTimeStr1Short:(long long)time        {            NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];            NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d",[component year],[component month],[component day]];            return string;        }                + (NSString*)getMDStr:(long long)time        {                        NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];            NSString * string=[NSString stringWithFormat:@"%d月%d日",[component month],[component day]];            return string;        }                +(NSDateComponents*) getComponent:(long long)time        {            NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];            return component;        }                        +(NSString*) getTimeStrStyle1:(long long)time        {            NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];                    int year=[component year];            int month=[component month];            int day=[component day];                        int hour=[component hour];            int minute=[component minute];                        NSDate * today=[NSDate date];            component=[calendar components:unitFlags fromDate:today];                        int t_year=[component year];                        NSString*string=nil;                        long long now=[today timeIntervalSince1970];                        long long distance=now-time;            if(distance<60)                string=@"刚刚";            else if(distance<60*60)                string=[NSString stringWithFormat:@"%lld分钟前",distance/60];            else if(distance<60*60*24)                string=[NSString stringWithFormat:@"%lld小时前",distance/60/60];            else if(distance<60*60*24*7)                string=[NSString stringWithFormat:@"%lld天前",distance/60/60/24];            else if(year==t_year)                string=[NSString stringWithFormat:@"%02d-%02d %d:%02d",month,day,hour,minute];            else                string=[NSString stringWithFormat:@"%d-%d-%d",year,month,day];                        return string;                       }        +(NSString*) getTimeStrStyle2:(long long)time        {                        NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];            NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];            NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit;            NSDateComponents * component=[calendar components:unitFlags fromDate:date];                        int year=[component year];            int month=[component month];            int day=[component day];            int hour=[component hour];            int minute=[component minute];            int week=[component week];            int weekday=[component weekday];                        NSDate * today=[NSDate date];            component=[calendar components:unitFlags fromDate:today];                        int t_year=[component year];            int t_month=[component month];            int t_day=[component day];            int t_week=[component week];                        NSString*string=nil;            if(year==t_year&&month==t_month&&day==t_day)            {                if(hour<6&&hour>=0)                    string=[NSString stringWithFormat:@"凌晨 %d:%02d",hour,minute];                else if(hour>=6&&hour<12)                    string=[NSString stringWithFormat:@"上午 %d:%02d",hour,minute];                else if(hour>=12&&hour<18)                    string=[NSString stringWithFormat:@"下午 %d:%02d",hour,minute];                else                    string=[NSString stringWithFormat:@"晚上 %d:%02d",hour,minute];            }            else if(year==t_year&&week==t_week)            {                NSString * daystr=nil;                switch (weekday) {                    case 1:                        daystr=@"日";                        break;                    case 2:                        daystr=@"一";                        break;                    case 3:                        daystr=@"二";                        break;                    case 4:                        daystr=@"三";                        break;                    case 5:                        daystr=@"四";                        break;                    case 6:                        daystr=@"五";                        break;                    case 7:                        daystr=@"六";                        break;                    default:                        break;                }                string=[NSString stringWithFormat:@"周%@ %d:%02d",daystr,hour,minute];            }            else if(year==t_year)                string=[NSString stringWithFormat:@"%d月%d日",month,day];            else                string=[NSString stringWithFormat:@"%d年%d月%d日",year,month,day];                        return string;        }                +(int)dayCountForMonth:(int)month andYear:(int)year        {            if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) {                return 31;            }else if(month==4||month==6||month==9||month==11){                return 30;            }else if([self isLeapYear:year]){                return 29;            }else{                return 28;            }        }        +(BOOL)isLeapYear:(int)year        {            if (year%400==0) {                return YES;            }else{                if (year%4==0&&year%100!=0) {                    return YES;                }else{                    return NO;                }            }        }                @end