文档章节

Objective-C --日期

Ethan-GOGO
 Ethan-GOGO
发布于 2015/08/27 16:44
字数 794
阅读 99
收藏 0

1,读取当前的日期格式,然后自动转化为yyyy-MM-dd HH:mm:ss 0000

    //日期格式器
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    
    // E:星期几
    // M:月份
    // d:几号(这个月的第几天)
    // H:24小时制的小时
    // m:分钟
    // s:秒
    // y:年
    // _created_at == Thu Oct 16 17:06:25 +0800 2014
    //读取当前的日期格式,然后自动转化为yyyy-MM-dd HH:mm:ss 0000
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";

2,如果是真机调试,转换这种欧美时间,需要设置locale

fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

3,字符串互转日期

    //字符串转为日期
    NSDate *creatDate = [fmt dateFromString:_created_at];
    //日期转为字符串
    NSString *str = [fmt stringFromdata:_created_at];

4,对比两个日期的差值

 //日历对象
    NSCalendar *calendar = [NSCalendar currentCalendar];
 //计算两个日期之间的差值,NSCalendarUnit枚举代表想获得哪些差值
    NSCalendarUnit unit = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute;
 //获得对比对象
    NSDateComponents *cmps = [calendar components:unit fromDate:creatDate toDate:now options:0];

5,判断是否为今天,昨天,今年

- (BOOL)isThisYear:(NSDate *)creatDate
{
#warning //取出当前的日期--年月日
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:creatDate];
    NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];
    
    return dateCmps.year == nowCmps.year;
}

- (BOOL)isToday:(NSDate *)creatDate
{
    /** 另一种方法*/
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    
    NSDate *now = [NSDate date];
    NSString *nowStr = [fmt stringFromDate:now];
    NSString *dateStr = [fmt stringFromDate:creatDate];
    
    return [nowStr isEqualToString:dateStr];
}

- (BOOL)isYesterday:(NSDate *)creatDate
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"dd";
    
    NSDate *now = [NSDate date];
    NSString *nowStr = [fmt stringFromDate:now];
    NSString *dateStr = [fmt stringFromDate:creatDate];
    
    BOOL isSure = NO;
    if (nowStr.intValue - dateStr.intValue == 1) {
        isSure = YES;
    }
    //WBLog(@"%d",xx);
    
    return isSure;
}

6,微博时间显示

//1,美国时间转为中国时间
//2, 转为各种模式显示
-(NSString *)created_at
{
    _created_at = @"Thu Aug 26 10:35:34 +0800 2015";
    
    //日期格式器
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    
    // E:星期几
    // M:月份
    // d:几号(这个月的第几天)
    // H:24小时制的小时
    // m:分钟
    // s:秒
    // y:年
    // _created_at == Thu Oct 16 17:06:25 +0800 2014
    //读取当前的日期格式,然后自动转化为yyyy-MM-dd HH:mm:ss 0000
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
#warning  如果是真机调试,转换这种欧美时间,需要设置locale
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    //微博的创建日期
    NSDate *creatDate = [fmt dateFromString:_created_at];
    //当前时间
    NSDate *now = [NSDate date];
    //日历对象(方便两个日期之前的差距比较)
    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    //计算两个日期之间的差值,NSCalendarUnit枚举代表想获得哪些差值
    NSCalendarUnit unit = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute;
    NSDateComponents *cmps = [calendar components:unit fromDate:creatDate toDate:now options:0];
    
    if ([self isThisYear:creatDate]) {
        if ([self isYesterday:creatDate]) {
            fmt.dateFormat = @"昨天 HH:mm";
            return [fmt stringFromDate:creatDate];
        }else if ([self isToday:creatDate]){
            if (cmps.hour > 1) {
                return [NSString stringWithFormat:@"%d小时前",cmps.hour];
            }else if (cmps.minute > 1){
                return [NSString stringWithFormat:@"%d分钟前",cmps.minute];
            }else{
                return @"刚刚";
            }
        }else{//今年其他日子
            fmt.dateFormat = @"MM-dd HH:mm";
            return [fmt stringFromDate:creatDate];
        }
    }else{//非今年
        fmt.dateFormat = @"yyyy-MM-dd HH:mm";
        return [fmt stringFromDate:creatDate];
    }
    
    return _created_at;
}

- (BOOL)isThisYear:(NSDate *)creatDate
{
#warning //取出当前的日期--年月日
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:creatDate];
    NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];
    
    return dateCmps.year == nowCmps.year;
}

- (BOOL)isToday:(NSDate *)creatDate
{
    /** 另一种方法*/
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    
    NSDate *now = [NSDate date];
    NSString *nowStr = [fmt stringFromDate:now];
    NSString *dateStr = [fmt stringFromDate:creatDate];
    
    return [nowStr isEqualToString:dateStr];
}

- (BOOL)isYesterday:(NSDate *)creatDate
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"dd";
    
    NSDate *now = [NSDate date];
    NSString *nowStr = [fmt stringFromDate:now];
    NSString *dateStr = [fmt stringFromDate:creatDate];
    
    BOOL isSure = NO;
    if (nowStr.intValue - dateStr.intValue == 1) {
        isSure = YES;
    }
    //WBLog(@"%d",xx);
    
    return isSure;
}

 

5.时间戳

    //时间字符串 -> 时间戳
    NSString *string = @"1712312312312";
    NSTimeInterval second = string.longLongValue / 1000.0;
    
    //时间戳 -> NSDate
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];

 

© 著作权归作者所有

Ethan-GOGO
粉丝 14
博文 174
码字总数 82033
作品 0
广州
私信 提问
公历农历转换

公历(阳历)农历(阴历)转换,支持时间段从1900-2100 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby等 支持Mac,Windows,Android,WP多种平台 数据验证 1....

meizhitu
2015/01/16
2.6K
1
DateTools

DateTools 能很好的在 Objective-C 中处理日期和时间。

叶秀兰
2014/04/01
467
0
Swift 3.0 及展望:彻底的泛型、精简的语言

2015 年 12 月 3 日,Swift 正式开源。同时,官方也公布了 Swift 3 的最新消息,即 Swift 3 将会在 2016 年秋天发布。 API 设计指南与 Swift 中 Objective-C 的导入 Swift 3 的 API 设计指南...

oschina
2015/12/24
16.7K
30
2011年度编程语言锁定Objective-C

  【IT168 评论】虽然2011年才刚过半,但随着iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新,从市场占有的趋势来看,Objective-C成为年度编程语言无疑。   TIOBE编程语言...

作者:高昂
2011/08/22
0
0
iOS 验证--FXModelValidation

FXModelValidation 是 Objective-C 库,可以简单验证日期/模型/表单,适用于所有 NSObject。

叶秀兰
2014/12/26
151
0

没有更多内容

加载失败,请刷新页面

加载更多

c语言实现Sqlite3的创建db和增删改查db操作

SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能...

jorin_zou
2分钟前
2
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第2题

choose three Which three are true about the CREATE TABLE command? A) It can include the CREATE...INDEX statement for creating an index to enforce the primary key constraint. B) ......

oschina_5359
5分钟前
2
0
如何在二维码中循环批量插入图片

现在二维码种类比较多,为了突出二维码的个性及吸引客户,很多朋友都喜欢在二维码上插入图片。想要每个二维码都与众不同,但是有的时候需要批量插入图片数量有限,如果制作的二维码比较多的话...

中琅软件
6分钟前
2
0
LTR那点事—AUC及其与线上点击率的关联详解

LTR(Learning To Rank)学习排序是一种监督学习(SupervisedLearning)的排序方法,现已经广泛应用于信息索引,内容推荐,自然语言处理等多个领域。以推荐系统为例,推荐一般使用多个子策略...

达观数据
7分钟前
2
0
IntelliJ 如何显示代码的代码 docs

希望能够在 IntelliJ 代码上面显示方法的 docs。 如何进行显示? 你可以使用 Ctrl + Q 这个快捷键来查看方法的 Docs。 https://blog.ossez.com/archives/3061...

honeymoose
10分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部