近期项目有类似QQ空间展示动态的UI,模仿了QQ空间的时间显示。在此记录,以备查阅。

这是QQ空间的ui:

时间显示为:

1.今天-->今天 xx:xx(今天 15:39)

2.昨天-->昨天 xx:xx(昨天 06:00)

3.前天-->前天 xx:xx(前天 19:00)

4.同一年, 比如:同一年的一月三号-->01-03 xx:xx(01-03 12:29)

5.不在同一年 --> xxxx-xx-xx(2014-12-12)

程序执行效果例如以下。下面为简单的測试。没有ui界面:


以下的代码是在网上已有代码的基础上更改而来,原代码点此查看
  1. /**
  2. * 仿QQ空间时间显示
  3. * @param string eg:2015年5月24日 02时21分30秒
  4. */
  5. - (NSString *)format:(NSString *)string{
  6. NSDateFormatter *inputFormatter= [[NSDateFormatter alloc] init];
  7. [inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] ];
  8. [inputFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
  9. NSDate*inputDate = [inputFormatter dateFromString:string];
  10. //NSLog(@"startDate= %@", inputDate);
  11.  
  12. NSDateFormatter *outputFormatter= [[NSDateFormatter alloc] init];
  13. [outputFormatter setLocale:[NSLocale currentLocale]];
  14. [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  15. //get date str
  16. NSString *str= [outputFormatter stringFromDate:inputDate];
  17. //str to nsdate
  18. NSDate *strDate = [outputFormatter dateFromString:str];
  19. //修正8小时的差时
  20. NSTimeZone *zone = [NSTimeZone systemTimeZone];
  21. NSInteger interval = [zone secondsFromGMTForDate: strDate];
  22. NSDate *endDate = [strDate dateByAddingTimeInterval: interval];
  23. //NSLog(@"endDate:%@",endDate);
  24. NSString *lastTime = [self compareDate:endDate];
  25. NSLog(@"lastTime = %@",lastTime);
  26. return str;
  27. }
  28.  
  29. -(NSString *)compareDate:(NSDate *)date{
  30.  
  31. NSTimeInterval secondsPerDay = 24 * 60 * 60;
  32.  
  33. //修正8小时之差
  34. NSDate *date1 = [NSDate date];
  35. NSTimeZone *zone = [NSTimeZone systemTimeZone];
  36. NSInteger interval = [zone secondsFromGMTForDate: date1];
  37. NSDate *localeDate = [date1 dateByAddingTimeInterval: interval];
  38.  
  39. //NSLog(@"nowdate=%@\nolddate = %@",localeDate,date);
  40. NSDate *today = localeDate;
  41. NSDate *yesterday,*beforeOfYesterday;
  42. //今年
  43. NSString *toYears;
  44.  
  45. toYears = [[today description] substringToIndex:4];
  46.  
  47. yesterday = [today dateByAddingTimeInterval: -secondsPerDay];
  48. beforeOfYesterday = [yesterday dateByAddingTimeInterval: -secondsPerDay];
  49.  
  50. // 10 first characters of description is the calendar date:
  51. NSString *todayString = [[today description] substringToIndex:10];
  52. NSString *yesterdayString = [[yesterday description] substringToIndex:10];
  53. NSString *beforeOfYesterdayString = [[beforeOfYesterday description] substringToIndex:10];
  54.  
  55. NSString *dateString = [[date description] substringToIndex:10];
  56. NSString *dateYears = [[date description] substringToIndex:4];
  57.  
  58. NSString *dateContent;
  59. if ([dateYears isEqualToString:toYears]) {//同一年
  60. //今 昨 前天的时间
  61. NSString *time = [[date description] substringWithRange:(NSRange){11,5}];
  62. //其它时间
  63. NSString *time2 = [[date description] substringWithRange:(NSRange){5,11}];
  64. if ([dateString isEqualToString:todayString]){
  65. dateContent = [NSString stringWithFormat:@"今天 %@",time];
  66. return dateContent;
  67. } else if ([dateString isEqualToString:yesterdayString]){
  68. dateContent = [NSString stringWithFormat:@"昨天 %@",time];
  69. return dateContent;
  70. }else if ([dateString isEqualToString:beforeOfYesterdayString]){
  71. dateContent = [NSString stringWithFormat:@"前天 %@",time];
  72. return dateContent;
  73. }else{
  74. return time2;
  75. }
  76. }else{
  77. return dateString;
  78. }
  79. }

IOS日期转为今天昨天形式的更多相关文章

  1. BIP_开发案例07_将原有Report Builer报表全部转为XML Publisher形式(案例)

    2014-05-31 Created By BaoXinjian

  2. R语言将5位数字日期转为正常日期

    R语言中用double表示日期,即从1970-1-1距离给定日期的天数,将5位数字日期转为正常日期格式的方法 as.Date(16543,origin='1970-1-1')

  3. placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容

    placeholder:::-webkit-input-placeholder { color: rgba(153, 153, 153, 0.541);font-size:12px;}:-moz-pl ...

  4. 【C#】string格式的日期转为DateTime类型及时间格式化处理方法

    日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒 ...

  5. Java与IOS日期格式

    //JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...

  6. PostgreSQL将日期转为当前年、月、日的函数date_trunc

    PostgreSQL将日期转为年.月.日的函数date_trunc: 当前年: select  date_trunc('year',now()) 当前月: select  date_trunc('mo ...

  7. IOS 日期的简洁格式展示

    首先我要解释一下标题的意义,日期的简洁格式展示,之所以简介,是因为让人一目了然,不需要思考是什么时候. 在详细一点就是我们在微信朋友圈中 所看到的时间格式. 例如:刚刚 -几分钟前-几小时前等等. 今 ...

  8. MySql中使用日期函数获取昨天的数据

    .body-classic{ color:#444; font-family:Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Rom ...

  9. Swift iOS 日期操作:NSDate、NSDateFormatter

    1.日期(NSDate) // 1.初始化 // 初始化一个当前时刻对象 var now = NSDate() // 初始化一个明天当前时刻对象 var tomorrow = NSDate(timeI ...

随机推荐

  1. ASP.NET WebAPI RC 竟然不支持最常用的json传参

    壮士断腕(WCF Web API),为的是 ASP.NET Web API 的横空出世,再加上它的开放(开源),于是对之产生了一点点痴情,并写下了HttpClient + ASP.NET Web AP ...

  2. vue脚手架3.0的搭建

    一.安装node 打开cmd输入node -v查看是否安装成功 显示node版本号表示安装成功,显示‘node’不是内部或外部命令表示未安装node.node安装地址:http://nodejs.cn ...

  3. 【2017 Multi-University Training Contest - Team 3】RXD and math

    [Link]: [Description] [Solution] 发现1010mod(109+7)=999999937; 猜测答案是nk 写个快速幂; 注意对底数先取模; [NumberOf WA] ...

  4. 27.mutex跨进程通信

    创建互斥量mutex HANDLE mutex = CreateMutexA(NULL, TRUE, name); 根据id打开mutex HANDLE mutex = OpenMutexA(MUTE ...

  5. 洛谷 P1109 学生分组

    P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...

  6. Caused by: java.lang.NoSuchMethodError:javax.servlet.http.HttpServletRequest.getServletContext()L

    在做项目的时候,出现Caused by: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletCo ...

  7. GraphX 图数据建模和存储

    背景 简单分析一下GraphX是怎么为图数据建模和存储的. 入口 能够看GraphLoader的函数. def edgeListFile( sc: SparkContext, path: String ...

  8. PHPki

    PHPki PHPki是一个基于开放源码Web的应用程序,用来管理遵守HIPAA的多代理"公钥基础结构".它可以用于创建X.509数字证书,并主要为支持S/MIME的电子邮件客户端 ...

  9. js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化

    js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化 一.总结 一句话总结:如果用ajax传递表单的数据,如果不进行表单的序列化,要一个参数一个参数的写,太麻烦,序列化的话,一句代 ...

  10. 1.2 Use Cases中 Event Sourcing官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Event Sourcing 事件采集 Event sourcing is a st ...