一、前言

  今天无意间想起写这个功能,仔细考虑了一下,其实很简单,整体思路如下:

  先获取你所要转换的时间的年月日,然后再获取今天和昨天的年月日,然后对比,进而返回不同的字符串。

二、实现步骤

  首先,我们设置一下时间格式:

  1. NSDateFormatter *format = [[NSDateFormatter alloc] init];
  2. [format setDateFormat:@"YYYY年MM月dd日"];
  1. NSDateFormatter *fo = [[NSDateFormatter alloc] init];
  2. [fo setDateFormat:@"HH:mm"];

  然后我们要获得传过来的时间的年月日和时分:

  1. //获取传过来的时间的时分
  2. NSString *hoursandSec = [fo stringFromDate:date];
  3.  
  4. //获取传过来的时间的date
  5. NSString *createDate = [format stringFromDate:date];

  然后获取今天和昨天的年月日:

  1. //获取今天
  2. NSDate *nowDate = [NSDate date];
  3. NSString *today = [format stringFromDate:nowDate];
  4.  
  5. //获取昨天
  6. NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:-(**)];
  7. NSString *yesterday = [format stringFromDate:yesterdayDate];

  然后对比返回数据即可:

  1. if ([createDate isEqualToString:today]) {
  2. return [NSString stringWithFormat:@"今天%@",hoursandSec];
  3. }else if ([createDate isEqualToString:yesterday])
  4. {
  5. return [NSString stringWithFormat:@"昨天%@",hoursandSec];
  6. }else
  7. {
  8. return [NSString stringWithFormat:@"%@ %@",createDate,hoursandSec];
  9. }

  完成。

三、附加方法源码

  1. /获取时间:今天昨天
  2. +(NSString *)getYMD:(NSDate *)date
  3. {
  4. NSDateFormatter *format = [[NSDateFormatter alloc] init];
  5. [format setDateFormat:@"YYYY年MM月dd日"];
  6.  
  7. //获取传过来的时间的时分
  8. NSDateFormatter *fo = [[NSDateFormatter alloc] init];
  9. [fo setDateFormat:@"HH:mm"];
  10. NSString *hoursandSec = [fo stringFromDate:date];
  11.  
  12. //获取传过来的时间的date
  13. NSString *createDate = [format stringFromDate:date];
  14.  
  15. //获取今天
  16. NSDate *nowDate = [NSDate date];
  17. NSString *today = [format stringFromDate:nowDate];
  18.  
  19. //获取昨天
  20. NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:-(**)];
  21. NSString *yesterday = [format stringFromDate:yesterdayDate];
  22.  
  23. if ([createDate isEqualToString:today]) {
  24. return [NSString stringWithFormat:@"今天%@",hoursandSec];
  25. }else if ([createDate isEqualToString:yesterday])
  26. {
  27. return [NSString stringWithFormat:@"昨天%@",hoursandSec];
  28. }else
  29. {
  30. return [NSString stringWithFormat:@"%@ %@",createDate,hoursandSec];
  31. }
  32. }

iOS时间显示今天昨天的更多相关文章

  1. 【safari挖的那些坑】iOS safari 浏览器 时间乱码(ios时间显示NaN) 问题解决

    通常 iOS下时间错误表现形式 问题一: 这个界面运用了大量的日期类型的计算,当我们用JavaScript实例化一个日期对象时,我们可以这样用: var date =new Date(); 上面这段代 ...

  2. IOS safari 浏览器 时间乱码(ios时间显示NaN) 问题解决

    问题一: 项目中遇到一个关于日期时间在ios中乱码在安卓中安然无恙的问题,焦躁了半天 问题如上图,通过用户选择的时间和当天的天数相加然后在ios上就是乱码 这个界面运用了日期类型的计算,当我们用Jav ...

  3. ios时间显示NaN

    问题是当时js里时间是这种格式的 2016-09-07 16:37:50 用var time = obj.replace(/\-/g, "/");将格式改成 2016/09/07 ...

  4. vue中解决时间在ios上显示NAN的问题

    最近在用vue,遇到倒计时在ios上显示为NAN的问题. 因为做的是倒计时支付,思路是获取服务器时间和下单时间,再转成秒级时间戳做差值. 在网上找到说是ios 不支持例如2018-09-01 10:0 ...

  5. iOS 时间的处理

    做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单.我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制. 时间的形式 ...

  6. iOS时间问题

    在iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等.解决办法网上比比皆是,但大多零零散散,很多资料并没有说明其中问题.这里集中总结一下,以便于以后查阅和供大家参考. ...

  7. 将时间显示为“刚刚”“n分钟/小时前”等

    在很多场合为了显示出信息的及时性,一般会将时间显示成“刚刚”,“5分钟前”,“3小时前”等,而不是直接将时间打印出来.比如微博,SNS类应用就最长用到这个功能.而一般存储在数据库中的时间格式为 Uni ...

  8. ios 时间解析 差8个小时

    啥问题也有:小程序中web开发工具里显示时间正常,ios上显示的查8小时 原因: 使用 NSDate *date = [NSDate date]; 获取的时间是标注的UTC时间,和北京时间相差8小时. ...

  9. IOS日期转为今天昨天形式

    近期项目有类似QQ空间展示动态的UI,模仿了QQ空间的时间显示.在此记录,以备查阅. 这是QQ空间的ui: 时间显示为: 1.今天-->今天 xx:xx(今天 15:39) 2.昨天--> ...

随机推荐

  1. rabbitMQ和对应的erlang版本匹配

    来源自https://www.rabbitmq.com/which-erlang.html erlang安装包下载地址 https://packages.erlang-solutions.com/er ...

  2. Redis 内存模型

    了解 Redis 的 5 种对象类型(字符串.哈希.列表.集合.有序集合)的用法和特点的基础,了解 Redis 的内存模型,对 Redis 的使用有很大帮助,例如: 估算 Redis 内存使用量.内存 ...

  3. leetcode — valid-parentheses

    import java.util.Stack; /** * Source : https://oj.leetcode.com/problems/valid-parentheses/ * * Creat ...

  4. javascript中的iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...

  5. Layui上传图片 带接口

    layui.use('upload', function () { var upload = layui.upload; upload.render({ elem: '#LAY_avatarUploa ...

  6. c# 数组协变

    class a{} class b:a{} a[] arr=new a[3]; a[] arr2=new a[3]; 给arr 数组赋值 arr[0]=new a(); arr2[0]=new b() ...

  7. 菜鸟入门【ASP.NET Core】13:Individual authentication 模板、EF Core Migration

    Individual authentication 模板 我们首先用VSCode新建一个mvc的网站,这个网站创立的时候回自动为我们创建Identuty Core以及EF Core的代码示例,我们可以 ...

  8. 聚簇索引(聚集索引) 不可作用于GUID类型字段

    聚簇索引(又名聚集索引) 不可作用于GUID类型字段,即:数据库中不要把GUID类型作为主键或设置为聚集索引. 聚集索引:索引的物理存储顺序与数据表中行数据物理存储顺序一致(索引存储物理有序). 非聚 ...

  9. JAVA的高并发基础认知 一

    一.多线程的基本知识 1.1进程与线程的介绍 程序运行时在内存中分配自己独立的运行空间,就是进程 线程:它是位于进程中,负责当前进程中的某个具备独立运行资格的空间. 进程是负责整个程序的运行,而线程是 ...

  10. Oracle总结二

    1 where子句 Where子句的作用:用where子句来指定查询条件 1.1 用法示例 select * from emp where deptno=10; select * from emp w ...