最近想写点日常使用的工具类,方便开发。
首先想到就是时间之类的问题,所以打开Xocde
,进行代码编辑。
这个代码考虑不是很完全,日后有时间再进行修改补充。
接口文件
我使用的类名称为DateHandleUtils
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, WeiBoTimeStyle) {
WeiBoTimeStyleSecond,
WeiBoTimeStyleMillisecond
};
@interface DateHandleUtils : NSObject
/**
根据时间返回文字时间戳
@param timeInterval 比较时间
@param style 时间戳格式
@return `刚刚`、`10秒前`、`10分钟前`、`1小时前`等等
*/
+ (NSString *)weiboTimeWithPublicTime:(NSTimeInterval)timeInterval timeStyel:(WeiBoTimeStyle)style;
/**
* 当前时间时间戳
*
@return 毫秒的时间戳
*/
+ (NSTimeInterval)currentMilliSecondTimeInterval;
/**
* 当前时间时间戳
*
@return 秒的时间戳
*/
+ (NSTimeInterval)currentSecondTimeInterval;
/**
* 根据时间戳获取时间差
*
@param startTime 开始时间的时间戳
@param endTime 结束时间的时间戳
@return 返回差值,单位为秒
@warning 传值格式为:毫秒级时间戳
*/
+ (NSTimeInterval)timeDifferenceOfMillisecondWithStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime;
/**
* 根据时间戳获取时间差
*
@param startTime 开始时间的时间戳
@param endTime 结束时间的时间戳
@return 返回差值,单位为秒
@warning 传值格式为:秒级时间戳
*/
+ (NSTimeInterval)timeDifferenceOfSecondsWithStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime;
@end
NS_ASSUME_NONNULL_END
实现文件
@implementation DateHandleUtils
+ (NSString *)weiboTimeWithPublicTime:(NSTimeInterval)timeInterval timeStyel:(WeiBoTimeStyle)style {
NSTimeInterval interval;
switch (style) {
case WeiBoTimeStyleSecond:
interval = [DateHandleUtils timeDifferenceOfSecondsWithStartTimeInterval:timeInterval endTimeInterval:[DateHandleUtils currentSecondTimeInterval]];
break;
case WeiBoTimeStyleMillisecond:
interval = [DateHandleUtils timeDifferenceOfMillisecondWithStartTimeInterval:timeInterval endTimeInterval:[DateHandleUtils currentMilliSecondTimeInterval]];
break;
default:
break;
}
if (interval < 10) {
return @"刚刚";
} else if (interval < 60) {
return [NSString stringWithFormat:@"%.f秒前", interval];
} else if (interval / 60 < 60) {
return [NSString stringWithFormat:@"%.f分钟前", interval / 60];
} else if (interval / 60 / 60 < 24) {
return [NSString stringWithFormat:@"%.f小时前", interval / 60 / 60 - 1];
} else if (interval / 60 / 60 / 24 < 30) {
return [NSString stringWithFormat:@"%.f天前", interval / 60 / 60 / 24];
} else if (interval / 60 / 60 / 24 / 30 < 12) {
return [NSString stringWithFormat:@"%.f月前", interval / 60 / 60 / 24 / 30];
} else if (interval / 60 / 60 / 24 / 30 / 12 >= 1){
return [NSString stringWithFormat:@"%.f年前", interval / 60 / 60 / 24 / 30 / 12];
} else {
return @"未知时间";
}
}
+ (NSTimeInterval)currentMilliSecondTimeInterval {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle: NSDateFormatterMediumStyle];
[formatter setTimeStyle: NSDateFormatterShortStyle];
[formatter setDateFormat: @"YYYY-MM-dd HH:mm:ss SSS"];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName: @"Asia/Shanghai"];
[formatter setTimeZone: timeZone];
NSDate *datenow = [NSDate date];
return [datenow timeIntervalSince1970] * 1000;
}
+ (NSTimeInterval)currentSecondTimeInterval {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle: NSDateFormatterMediumStyle];
[formatter setTimeStyle: NSDateFormatterShortStyle];
[formatter setDateFormat: @"YYYY-MM-dd HH:mm:ss SSS"];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName: @"Asia/Shanghai"];
[formatter setTimeZone: timeZone];
NSDate *datenow = [NSDate date];
return [datenow timeIntervalSince1970];
}
+ (NSTimeInterval)timeDifferenceOfMillisecondWithStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime {
if (startTime < endTime) {
return (endTime - startTime) / 1000;
} else {
return (startTime - endTime) / 1000;
}
}
+ (NSTimeInterval)timeDifferenceOfSecondsWithStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime {
if (startTime < endTime) {
return (endTime - startTime);
} else {
return (startTime - endTime);
}
}
@end
使用方式
都是类方法,用的时候直接使用类名调用就可以了(实例:[DateHandleUtils currentMilliSecondTimeInterval];
);