新浪微博客户端(28)-格式化日期显示

DJStatus.m

#import "DJStatus.h"
#import "MJExtension.h"
#import "DJPhoto.h"

@implementation DJStatus

+ (NSDictionary *)mj_objectClassInArray {

    return @{@"pic_urls":[DJPhoto class]};

}

// 格式化返回日期
- (NSString *)created_at {

    /* 将日期字符串转换为NSDate对象 */
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
    NSDate *createDate = [fmt dateFromString:_created_at];

    NSDate *nowDate = [NSDate date];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

    // 获取两个指定日期之前的差值
    NSDateComponents *components = [calendar components:unit fromDate:createDate toDate:nowDate options:0];

    if ([createDate isThisYear]) { // 今年
        if ([createDate isYesterday]) { // 昨天
            fmt.dateFormat = @"昨天 HH:mm";
            return [fmt stringFromDate:createDate];
        } else if ([createDate isToday]) { // 今天

            if (components.hour >= 1) { // 大于1小时
                return [NSString stringWithFormat:@"%zd小时前",components.hour];
            } else if (components.minute >= 1) { // 1小时内
                return [NSString stringWithFormat:@"%zd分钟前",components.minute];
            } else { // 1分钟内
                return @"刚刚";
            }

        } else { // 今年的其它天
            fmt.dateFormat = @"MM-dd HH:mm";
            return [fmt stringFromDate:createDate];
        }

    } else { // 非今年
        fmt.dateFormat = @"yyyy-MM-dd HH:mm";
        return [fmt stringFromDate:createDate];
    }

    return _created_at;

}

@end

NSDate+Extension.m

#import "NSDate+Extension.h"

@implementation NSDate (Extension)

/** 判断当前日期是否是今年 */
- (BOOL)isThisYear {

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit yearUnit = NSCalendarUnitYear;

    NSDate *nowDate = [NSDate date];

    NSDateComponents *createDateComponents = [calendar components:yearUnit fromDate:self];
    NSDateComponents *nowDateComponents = [calendar components:yearUnit fromDate:nowDate];

    return createDateComponents.year == nowDateComponents.year;

}

/** 判断当前日期是否是昨天 */
- (BOOL)isYesterday {

    NSDate *nowDate = [NSDate date];
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

    NSString *createDateStr = [fmt stringFromDate:self];
    NSString *nowDateStr = [fmt stringFromDate:nowDate];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *fmtCreateDate = [fmt dateFromString:createDateStr];
    NSDate *fmtNowDate = [fmt dateFromString:nowDateStr];

    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

    NSDateComponents *components = [calendar components:unit fromDate:fmtCreateDate toDate:fmtNowDate options:0];

    // 要求年份差值为0,月份差值为0,天数差值为1天
    return (components.year == 0) && (components.month == 0) && (components.day == 1) ;

}

/** 判断当前日期是否是同一天 */
- (BOOL)isToday {
    NSDate *nowDate = [NSDate date];
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

    NSString *createDateStr = [fmt stringFromDate:self];
    NSString *nowDateStr = [fmt stringFromDate:nowDate];

    return [createDateStr isEqualToString:nowDateStr];

}

@end

最终效果:

时间: 2024-10-08 23:32:08

新浪微博客户端(28)-格式化日期显示的相关文章

新浪微博客户端(29)-格式化微博来源显示

DJStatus.m // 更新来源显示 - (void)setSource:(NSString *)source { NSRange range; range.location = [source rangeOfString:@">"].location + 1; range.length = [source rangeOfString:@"<" options:NSBackwardsSearch].location - range.location;

新浪微博客户端(16)-获得并显示用户昵称

DJHomeViewController.m - (void)updateTitleViewDisplayName { AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager]; NSString *urlString = @"https://api.weibo.com/2/users/show.json"; DJAccount *account = [DJAccountTool account]; NS

java高仿微博日期显示格式化,日期辅助工具类

原文:java高仿微博日期显示格式化,日期辅助工具类 源代码下载地址:http://www.zuidaima.com/share/1550463377902592.htm 仿新浪微博日期格式化工具类: 例如: 1. 刚刚 2. xx分钟前 3. hh小时前 4. 今天 HH:mm 5. 昨天 HH:mm 6. 前天 HH:mm 7. 上个月 yyyy-MM-dd HH:mm 8. 去年 yyyy-MM-dd HH:mm 9. 前年 yyyy-MM-dd HH:mm 今天写的代码,结构还很粗糙,只

Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据

一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以及显示的样式.在这里,我把Category,Supplier,Product和对应的ID去掉,指定显示的列: <sdk:DataGrid Name="dataGrid" AutoGenerateColumns="False" Margin="12&quo

08SpringMvc_(1)继承AbstractCommandController的Action[能够以实体的形式,收集客户端参数].(2)日期转换器和编码过滤器

上一篇文章说过要介绍两个控制器.这篇文章就介绍第二个控制器AbstractCommandController(这个类已经快要被废弃了,有更好的代替者,但还是要好好学这个类).这个控制器的额作用是为了收集提交的参数, 比如说之前的写法是://获取员工的姓名 String username=request.getParameter("username");这样去收集参数,提交的参数一多这样很不方便,所以引入了AbstractCommandController.记住SringMVC中的Act

SQLServer格式化日期

SQL Server 格式化日期 CONVERT将某种数据类型的表达式显式转换为另一种数据类型.由于某些需求经常用到取日期格式的不同.现以下可在SQL Server中 将日期格式化.SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式.在表中,左侧的两列表示将 datetime或 smalldatetime 转换为字符数据的style 值.给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy). *    默认值(style 0 或 100.9 或 109.13 或

SimpleDateFormat格式化日期以及日期的相关操作

一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在Java中,操作日期主要涉及到一下几个类: 1.java.util.Date 类 Date 表示特定的瞬间,精确到毫秒.从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串.Date 中的把日期解释为年.月.日.小时.分钟和

iOS开发之格式化日期时间

iOS开发之格式化日期时间 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

实例365(6)---------DateTime.ToString格式化日期,使用DateDiff方法获取日期时间的间隔数

一:DateTime.ToString格式化日期,截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TmrFormat { public part