zoukankan      html  css  js  c++  java
  • 网络刷帖时间显示

    今年:

      今天:  

        刚刚, 小于一分钟
        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;

    }

  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/PJXWang/p/5520763.html
Copyright © 2011-2022 走看看