网络刷帖时间显示

今年:

  今天:  

    刚刚, 小于一分钟
    n分钟前, 大于一分钟,小于一小时
    HH:mm:ss 大于一小时,今天之内

  昨天:

    昨天:HH:mm:ss 昨天

  其他:

    MM-dd HH:mm:ss 不是今天和昨天,但在今年内

非今年:

  yyyy-MM-dd HH:mm:ss 不在今年

算法实现

扩展NSDate类:

@interface NSDate (PJXExtension)

-(NSDateComponents *)dateFrom:(NSDate *)from;

-(BOOL)isThisYear;

-(BOOL)isToday;

-(BOOL)isYesterday;

@end

#import "NSDate+PJXExtension.h"

@implementation NSDate (PJXExtension)

-(NSDateComponents *)dateFrom:(NSDate *)from

{

//日历对象

NSCalendar *calendar = [NSCalendar currentCalendar];

//比较时间

NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;

NSDateComponents *cmps = [calendar components:unit fromDate:from toDate:self options:kNilOptions];

return cmps;

}

-(BOOL)isThisYear

{

NSCalendar *calendar = [NSCalendar currentCalendar];

NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];

NSInteger selfYear =[calendar component:NSCalendarUnitYear fromDate:self];

return nowYear == selfYear;

}

-(BOOL)isToday

{

NSCalendar *calendar = [NSCalendar currentCalendar];

NSCalendarUnit   unit =  NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

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

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

return  nowCmp.year == selfCmp.year

&&  nowCmp.month == selfCmp.month

&& nowCmp.day == selfCmp.day;

//    //利用日历对象比较是否是今天

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

//    fmt.dateFormat = @"yyyy-MM-dd";

//    NSString *nowStr = [fmt stringFromDate:[NSDate date]];

//    NSString *selfStr = [fmt stringFromDate:self ];

//    return [nowStr isEqualToString:selfStr];

}

-(BOOL)isYesterday

{

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

fmt.dateFormat = @"yyyy-MM-dd";

NSDate *nowDate = [fmt dateFromString:[fmt stringFromDate:[NSDate date]]];

NSDate *selfDate = [fmt dateFromString:[fmt stringFromDate:self ]];

NSCalendar *calendar = [NSCalendar currentCalendar];

NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay;

NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:kNilOptions];

return cmps.year==0

&& cmps.month == 0

&& cmps.day == 1;

}

@end

在显示类中实现

-(NSString *)setTime:(NSString *)time

{

NSLog(@"NSString time:%@",time);

//获得发帖的时间

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

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

NSDate *creat = [fmt dateFromString:time];

//显示时间的设置

NSString *text = nil;

if (creat.isThisYear) {

if(creat.isToday){

NSDateComponents *cmp = [[NSDate date] dateFrom:creat];

if (cmp.hour >= 1) {

text = [NSString stringWithFormat:@"%zd小时前",cmp.hour];

}else if(cmp.minute >= 1){

text = [NSString stringWithFormat:@"%zd分钟前",cmp.minute];

}else{

text = @"刚刚";

}

}else if(creat.isYesterday){

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

text = [fmt stringFromDate:creat];

}else{

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

text = [fmt stringFromDate:creat];

}

}else{

text = time;

}

NSLog(@"Display time:%@",text);

return text;

}

时间: 2024-10-25 05:02:22

网络刷帖时间显示的相关文章

11月第2周业务风控关注|36名利用网络刷单实施诈骗的犯罪嫌疑人从菲律宾被押解回国

易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.36名利用网络刷单实施诈骗的犯罪嫌疑人从菲律宾被押解回国 近日,36名利用网络刷单实施电信网络诈骗的犯罪嫌疑人被公安机关从菲律宾押解回国,自此700余起电信网络诈骗案成功告破,涉案金额1800余万元. 公安部有关负责人表示,全国公安机关将始终保持对此类犯罪高压严打态势,不断加强国际执法合作,坚决把犯罪分子绳之以法. 2.深圳查

Windows 修改个性化时间显示

我感觉我的时间显示不够人性化.不够个性化 修改注册表 我的系统为Windows 10 下图为我的时间显示 我感觉它不够个性化,人性化,我想自定义一份独特的时间显示格式 修改注册表 Windows键+R键,调出一下窗口,输入regedit 打开注册表 如下图: 定位到  \HKEY_CURRENT_USER\Control Panel\International 在右侧找到sTimeFormat , 修改该值的数值为"现在是 HH:mm:ss" 修改完成后可以即时看到效果 如下图: 修改

Android5.1 - 锁屏界面时间显示

[问题]待机唤醒解锁界面时间显示不全.不论是8寸还是7寸的屏幕都有此问题.时间显示设置为“上午10:30”的时候,最右边的数字0残缺.而时间数字少于4个时,数字不会残缺. [debug]找到相关的配置文件,把文字的大小修改为合适的值即可.在frameworks/base/packages下有2个目录,分别是Keyguard和SystemUI. 查看SystemUI的Android.mk文件LOCAL_STATIC_JAVA_LIBRARIES := Keyguard android-suppor

js调用时间显示日期为116年

今天在做一个客户网站的时候,突然发现以前用的调用系统时间的代码突然显示不正常了,时间显示116年,于是百度了一下,原来是 Date().getYear()这个API被废弃了,显示的是自1900年以来所经过的时间.于是果断加了个1900. 原代码如下: <script language=JavaScript> today=new Date(); function initArray(){ this.length=initArray.arguments.length for(var i=0;i&l

过一定时间显示可用控件

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>     <title></title>     <script type="text/ja

一个日期时间显示框的美化风格示例

一个日期时间显示框的美化风格示例,在网页上显示时间的一个美化示例,为时间显示框增加了一个漂亮的外框,这个外框是基于图片来美化的,,虽然现在都不主张用图片来美化了,不过看上去还真是挺漂亮的.www.srcfans.com为大家分享开源源码. 源码下载:一个日期时间显示框的美化风格示例

widget小插件--时间显示

widget.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_paren

时间显示

eclipse下获取系统时间 [1].[文件] MainActivity.java ~ 1KB    下载(17) 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 package com.example.timedemo; import

centos7 + mysql5.7 修改select now(); 时间显示错误的问题

昨天开发人员提出,在使用mysql数据库时,查看到的数据库时间有问题,与本地时间不一致: 一:查看问题 1.在数据库:查看时间: mysql> mysql> select now(); +---------------------+ | now()               | +---------------------+ | 2017-06-15 15:10:15 | +---------------------+ 1 row in set (0.00 sec) 2.在linux服务器: