- (NSString *)minutesAgo {

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *createdDate = [fmt dateFromString:self];

// 判断发送时间 和 现在时间 的差距

if (createdDate.isToday) { // 今天

if (createdDate.deltaWithNow.hour >= 1) {

fmt.dateFormat = @"HH:mm";

return [fmt stringFromDate:createdDate];

} else if (createdDate.deltaWithNow.minute >= 1) {

return [NSString stringWithFormat:@"%ld分钟前", (long)createdDate.deltaWithNow.minute];

} else {

return @"刚刚";

}

} else if (createdDate.isYesterday) { // 昨天

fmt.dateFormat = @"昨天 HH:mm";

return [fmt stringFromDate:createdDate];

} else if (createdDate.isThisYear) { // 今年(至少是前天)

fmt.dateFormat = @"MM-dd HH:mm";

return [fmt stringFromDate:createdDate];

} else {// 非今年

fmt.dateFormat = @"yyyy-MM-dd HH:mm";

return [fmt stringFromDate:createdDate];

}

}

#pragma mark Comparing Dates

- (BOOL) isEqualToDateIgnoringTime: (NSDate *) aDate

{

NSDateComponents *components1 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];

NSDateComponents *components2 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate];

return ((components1.year == components2.year) &&

(components1.month == components2.month) &&

(components1.day == components2.day));

}

- (BOOL) isToday

{

return [self isEqualToDateIgnoringTime:[NSDate date]];

}

- (BOOL) isYesterday

{

return [self isEqualToDateIgnoringTime:[NSDate dateYesterday]];

}

/**

*  获得与当前时间的差距

*/

- (NSDateComponents *)deltaWithNow {

NSCalendar *calendar = [NSCalendar currentCalendar];

int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];

}

/**

*  是否为今年

*/

- (BOOL)isThisYear {

NSCalendar *calendar = [NSCalendar currentCalendar];

int unit = NSCalendarUnitYear;

// 获得当前时间的年月日

NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];

// 获得self的年月日

NSDateComponents *selfCmps = [calendar components:unit fromDate:self];

return nowCmps.year == selfCmps.year;

}

NSDate 刚刚、几分钟、几小时的更多相关文章

  1. Python处理刚刚,分钟,小时,天前等时间

    简介 用爬虫获取目标网站数据后可能会遇见时间为处理刚刚,分钟,小时,天前等时间格式,如图 解决问题: 写了一个工具类来处理该问题,其中封装了两个函数 1. 将时间中的中文数字转换成阿拉伯数字 def ...

  2. IOS NSDate NSDateFormatter 导致相差8小时

    时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...

  3. java 时间戳 、时间差计算(秒、分钟、小时、天数、月份、年)

    以下代码就是时间差计算(秒.分钟.小时.天数.月份.年) package me.zhengjie; import java.text.ParseException; import java.text. ...

  4. 利用正则表达式判断Java中的秒钟、分钟、小时、日、月是否符合规则

    // 定义校验规则 Pattern patRule = Pattern.compile("判断规则"); // 校验结果 patRule.matcher("判断的对象&q ...

  5. cron 任务的典型格式是: 分钟(0-59) 小时(0-24) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令

    https://linux.cn/article-9687-1.html Cron 是您可以在任何类 Unix 操作系统中找到的最有用的实用程序之一.它用于安排命令在特定时间执行.这些预定的命令或任务 ...

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

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

  7. php根据时间显示刚刚,几分钟前,几小时前的实现代码

    发布时间距现在的时间 function tranTime($time) { $rtime = date("m-d H:i", $time); $htime = date(" ...

  8. js jq插件 显示中文时间戳 刚刚 N分钟前 N小时前 今天 上午 下午 日期格式化

    注:页面需提前引用JQ ; $.fn.extend({ /* ** notes: 获取13位时间戳的简单操作 ** new Date('2018-02-01 15:10:00').getTime() ...

  9. iOS 准确计算某个时间点距现在的时间差的代码 如"几分钟,几小时,几秒之前" ,

    利用时间戳来进行计算  ,需要给它一个时间: NSString *countTime = [self intervalSinceNow:@"2015-10-29 17:00:00" ...

随机推荐

  1. fzu1342

    http://acm.fzu.edu.cn/problem.php?pid=1342 dp[i][j]  , i位尾巴为j的概率 const int maxn = 1008 ; double dp[m ...

  2. 64位电脑上配置mysql-connector-odbc的方法

    在系统盘搜索odbcad32,选择在C:\Windows\SysWOW64内的文件

  3. 64位系统装oracle(ora-12154 )

    装了n次的oracle,昨下午装服务器的oracle,结果遇到了一个问题,让我百思不得其解,但最终在大家的帮助下终于解决了. 我装的服务器是windows server 2007 64位的,装完ora ...

  4. 转:Java.file

    类 java.io.File 的使用 使用 File 的软件包 java.awt 包含用于创建用户界面和绘制图形图像的所有类. java.io 通过数据流.序列化和文件系统提供系统输入和输出. jav ...

  5. C# .NET 基本概念

    1. private. protected. public. internal 修饰符的访问权限.   private : 私有成员, 在类的内部才可以访问.    protected : 保护成员, ...

  6. MFC 响应控件消息

    第一种,消息映射 第二种,重写OnCommand BOOL CmfcdlgDlg::OnCommand(WPARAM wParam, LPARAM lParam){ switch(wParam) { ...

  7. jquery操作复选框(checkbox)的12个小技巧总结

    1.获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[type='checkbox']: ...

  8. IE11错误:Exception in window.onload: An error has occuredJSPlugin.3005 解决方案

    问题:新安装的IE11无法使用F12开发者工具,DOC资源管理器提示错误“Exception in window.onload: An error has occuredJSPlugin.3005”. ...

  9. NK3C框架(MyBatis、Durid)连接SQL Server

    NK3C框架连接SQL Server修改配置如下: 1.添加POM引用 <sqlserver.driver.version>4.0</sqlserver.driver.version ...

  10. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)

    在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...