本文主要是介绍OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 在Tool.m文件中编写方法
//输入字符串格式为yyyy年MM月dd日 HH:mm:ss,返回与现在时间的差距,字符串形式
+(NSString *)handleDateFromString:(NSString *)dateString{NSString *string;
NSInteger data = 0;
//将字符串转换为NSDate
NSDateFormatter *dateFormatter = [NSDateFormatter new];
// 1.设置字符串的格式
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
// 2.转换
NSDate *dateForString = [dateFormatter dateFromString:dateString];
// 3.求出与现在的时间爱你差,过去 减 现在 为一个负数。
NSTimeInterval timeTnterval = [dateForString timeIntervalSinceNow];
// 4.过去的时间大于现在的时间也就是未来。
if(timeTnterval > 0){
string = @"你输入的时间是未来时间!error";
};
// 5.转换为正数比较,以确定范围
if (timeTnterval*-1 > 60*60*24*365) {
// 6.时间超过一年,字符串放回 年月日
// 6.1 找到字符串中 年、月、日 的范围,找到“日”的位置就找到了年、月、日 的范围。
NSRange range = [dateString rangeOfString:@"日"];
// 6.2 NSMakeRange(0, range.location+range.length)为年、月、日 的范围。用substringWithRange方法放回范围内的字符串到string中
string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
// 7.时间超过一个月则返回“‘多少个’月之前”,在这里我们不考虑每一个月份的不同最大天数的,都用31天,因为超过了31天就一定是一个月之前了,比起30天和29天要更加的贴切。
}else if(timeTnterval*-1 > 60*60*24*31){
// 8.求已经超过多少个月分
data = (NSInteger)timeTnterval/(60*60*24*31)*-1;
// 9.设置返回字符串的内容
string = [NSString stringWithFormat:@" %ld月之前",data];
// 10.其他雷同
}else if(timeTnterval*-1 > 60*60*24){
data = (NSInteger)timeTnterval/(60*60*24)*-1;
string = [NSString stringWithFormat:@" %ld天之前",data];
}else if(timeTnterval*-1 > 60*60){
data = (NSInteger)timeTnterval/(60*60)*-1;
string = [NSString stringWithFormat:@"%ld小时之前",data];
}else if(timeTnterval*-1 > 60){
data = (NSInteger)timeTnterval/60*-1;
string = [NSString stringWithFormat:@"%ld分钟之前",data];
}else if(timeTnterval < 60){
string = @"刚刚";
}
return string;
}
// 输入一个时间,返回与现在时间的差距,字符串形式
+(NSString *)handleDateFromdate:(NSDate *)date{
NSString *string;
NSInteger data = 0;
NSTimeInterval timeTnterval = [date timeIntervalSinceNow];
if(timeTnterval > 0){
string = @"error";
};
if (timeTnterval*-1 > 60*60*24*365) {
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:date];
NSRange range = [dateString rangeOfString:@"日"];
string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
}else if(timeTnterval*-1 > 60*60*24*30){
data = (NSInteger)timeTnterval/(60*60*24*30)*-1;
string = [NSString stringWithFormat:@" %ld月之前",data];
}else if(timeTnterval*-1 > 60*60*24){
data = (NSInteger)timeTnterval/(60*60*24)*-1;
string = [NSString stringWithFormat:@" %ld天之前",data];
}else if(timeTnterval*-1 > 60*60){
data = (NSInteger)timeTnterval/(60*60)*-1;
string = [NSString stringWithFormat:@"%ld小时之前",data];
}else if(timeTnterval*-1 > 60){
data = (NSInteger)timeTnterval/60*-1;
string = [NSString stringWithFormat:@"%ld分钟之前",data];
}else if(timeTnterval < 60){
string = @"刚刚";
}
return string;
}
这篇关于OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!