欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS计算上次日期距离现在多久的代码

程序员文章站 2024-02-14 09:34:34
本文实例为大家分享了ios上次日期距离现在多久的计算代码,供大家参考,具体内容如下 /** * 计算上次日期距离现在多久 * * @param las...

本文实例为大家分享了ios上次日期距离现在多久的计算代码,供大家参考,具体内容如下

/**
 * 计算上次日期距离现在多久
 *
 * @param lasttime  上次日期(需要和格式对应)
 * @param format1   上次日期格式
 * @param currenttime 最近日期(需要和格式对应)
 * @param format2   最近日期格式
 *
 * @return xx分钟前、xx小时前、xx天前
 */
+ (nsstring *)timeintervalfromlasttime:(nsstring *)lasttime
            lasttimeformat:(nsstring *)format1
             tocurrenttime:(nsstring *)currenttime
           currenttimeformat:(nsstring *)format2{
  //上次时间
  nsdateformatter *dateformatter1 = [[nsdateformatter alloc]init];
  dateformatter1.dateformat = format1;
  nsdate *lastdate = [dateformatter1 datefromstring:lasttime];
  //当前时间
  nsdateformatter *dateformatter2 = [[nsdateformatter alloc]init];
  dateformatter2.dateformat = format2;
  nsdate *currentdate = [dateformatter2 datefromstring:currenttime];
  return [utilities timeintervalfromlasttime:lastdate tocurrenttime:currentdate];
}
 
+ (nsstring *)timeintervalfromlasttime:(nsdate *)lasttime tocurrenttime:(nsdate *)currenttime{
  nstimezone *timezone = [nstimezone systemtimezone];
  //上次时间
  nsdate *lastdate = [lasttime datebyaddingtimeinterval:[timezone secondsfromgmtfordate:lasttime]];
  //当前时间
  nsdate *currentdate = [currenttime datebyaddingtimeinterval:[timezone secondsfromgmtfordate:currenttime]];
  //时间间隔
  nsinteger intevaltime = [currentdate timeintervalsincereferencedate] - [lastdate timeintervalsincereferencedate];
 
  //秒、分、小时、天、月、年
  nsinteger minutes = intevaltime / 60;
  nsinteger hours = intevaltime / 60 / 60;
  nsinteger day = intevaltime / 60 / 60 / 24;
  nsinteger month = intevaltime / 60 / 60 / 24 / 30;
  nsinteger yers = intevaltime / 60 / 60 / 24 / 365;
 
  if (minutes <= 10) {
    return @"刚刚";
  }else if (minutes < 60){
    return [nsstring stringwithformat: @"%ld分钟前",(long)minutes];
  }else if (hours < 24){
    return [nsstring stringwithformat: @"%ld小时前",(long)hours];
  }else if (day < 30){
    return [nsstring stringwithformat: @"%ld天前",(long)day];
  }else if (month < 12){
    nsdateformatter * df =[[nsdateformatter alloc]init];
    df.dateformat = @"m月d日";
    nsstring * time = [df stringfromdate:lastdate];
    return time;
  }else if (yers >= 1){
    nsdateformatter * df =[[nsdateformatter alloc]init];
    df.dateformat = @"yyyy年m月d日";
    nsstring * time = [df stringfromdate:lastdate];
    return time;
  }
  return @"";
}
 

使用如下:

nslog(@"\n\nresult: %@", [utilities timeintervalfromlasttime:@"2015年12月8日 15:50"
                      lasttimeformat:@"yyyy年mm月dd日 hh:mm"
                      tocurrenttime:@"2015/12/08 16:12"
                    currenttimeformat:@"yyyy/mm/dd hh:mm"]);

 输出结果如下:

iOS计算上次日期距离现在多久的代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。