注册 登录
主题 : 分享 - Date的相关Util方法
级别: 精灵王

UID: 6349
精华: 2
发帖: 123
可可豆: 11179 CB
威望: 11179 点
在线时间: 1002(时)
注册时间: 2009-06-14
最后登录: 2018-09-11
0 楼:  发表于: 2010-05-22 11:45    发自: Web Page
来源于 iPhone类代码 分类

分享 - Date的相关Util方法    (在iOS代码库中浏览本帖)

一系列关于Date的小方法,包括NSDate和NSString的互相转换,大家自己看看每个方法的说明吧

// return YEAR, MONTH, DAY in NSDateComponents by given NSDate
NSDateComponents *getDateComponents(NSDate *date)
{
    NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];    
    unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
    NSDateComponents *comps = [gregorian components:unitFlags fromDate:date];    
    return comps;
}

// return whether given date and today is the same day
BOOL isToday(NSDate *date)
{
    // Get Today's YYYY-MM-DD
    NSDateComponents *today_comps = getDateComponents([NSDate date]);
    
    // Given Date's YYYY-MM-DD
    NSDateComponents *select_comps = getDateComponents(date);        
    
    // if it's today, return TODAY
    if ( [today_comps year] == [select_comps year] &&
        [today_comps month] == [select_comps month] &&
        [today_comps day] == [select_comps day]){        
        return YES;
    }
    else {
        return NO;
    }

}

// covert date to string by given locale
NSString *dateToLocaleString(NSDate *date)
{
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
          
    NSLocale *locale = [NSLocale currentLocale];
    [dateFormatter setLocale:locale];
    
    NSLog(@"Date string for locale %@: %@",
          [[dateFormatter locale] localeIdentifier], [dateFormatter stringFromDate:date]);

    return [dateFormatter stringFromDate:date];
    
}

// convert date to string in YYYY-MM-DD format
NSString *dateToString(NSDate *date)
{
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    
    [dateFormatter setDateFormat:@"YYYY-MM-DD"];
    return [dateFormatter stringFromDate:date];    
}

// covert date to string by given format
NSString *dateToStringByFormat(NSDate *date, NSString *format)
{
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    
    [dateFormatter setDateFormat:format];
    return [dateFormatter stringFromDate:date];    
    
}

// convert string to date by given format
NSDate *dateFromStringByFormat(NSString *string, NSString *format)
{
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    
    [dateFormatter setDateFormat:format];
    
    return [dateFormatter dateFromString:string];    
    
}

// return start date time of the day
NSDate *getDateStart(NSDate* date)
{
    NSDateComponents* comp = getDateComponents(date);
    
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    
    NSString *dateString = [NSString stringWithFormat:@"%04d-%02d-%02d 00:00:00",
                            [comp year], [comp month], [comp day]];
    
    return [formatter dateFromString:dateString];
    
}

// return end date time of the day
NSDate *getDateEnd(NSDate* date)
{
    NSDateComponents* comp = getDateComponents(date);
    
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    
    NSString *dateString = [NSString stringWithFormat:@"%04d-%02d-%02d 23:59:59",
                            [comp year], [comp month], [comp day]];
    
    return [formatter dateFromString:dateString];    
}

// next date of given date
NSDate *nextDate(NSDate *date)
{
    return [[[NSDate alloc] initWithTimeInterval:24*3600 sinceDate:date] autorelease];
}

// previous date of given date
NSDate *previousDate(NSDate *date)
{
    return [[[NSDate alloc] initWithTimeInterval:-24*3600 sinceDate:date] autorelease];
    
}
新浪微博 weibo.com/pipipeng
Twitter: qqn_pipi
级别: 圣骑士
UID: 15372
精华: 1
发帖: 324
可可豆: 3270 CB
威望: 3270 点
在线时间: 289(时)
注册时间: 2010-03-13
最后登录: 2012-11-03
1 楼:  发表于: 2010-05-22 12:37    发自: Web Page
mark 一下
  
级别: 侠客
UID: 15763
精华: 0
发帖: 71
可可豆: 657 CB
威望: 657 点
在线时间: 175(时)
注册时间: 2010-03-19
最后登录: 2016-01-25
2 楼:  发表于: 2010-05-24 09:51    发自: Web Page
借用了    
贝哥
级别: 侠客
UID: 23020
精华: 0
发帖: 79
可可豆: 795 CB
威望: 745 点
在线时间: 674(时)
注册时间: 2010-06-24
最后登录: 2017-03-26
3 楼:  发表于: 2010-12-24 13:33    发自: Web Page
markk
级别: 侠客
UID: 46539
精华: 0
发帖: 56
可可豆: 560 CB
威望: 560 点
在线时间: 102(时)
注册时间: 2011-01-12
最后登录: 2013-11-21
4 楼:  发表于: 2011-03-04 17:13    发自: Web Page
标记下。。。。。。。。。
级别: 新手上路
UID: 49298
精华: 0
发帖: 7
可可豆: 70 CB
威望: 70 点
在线时间: 47(时)
注册时间: 2011-02-01
最后登录: 2012-10-17
5 楼:  发表于: 2011-03-17 13:24    发自: Web Page
谢谢了。。。good and good
级别: 新手上路
UID: 34069
精华: 0
发帖: 37
可可豆: 370 CB
威望: 370 点
在线时间: 50(时)
注册时间: 2010-10-16
最后登录: 2013-03-20
6 楼:  发表于: 2011-04-01 15:15    发自: Web Page
mark一下下

级别: 骑士

状态: 连续签到 - [7天]
UID: 97807
精华: 0
发帖: 237
可可豆: 1806 CB
威望: 1797 点
在线时间: 226(时)
注册时间: 2011-10-13
最后登录: 2019-03-21
7 楼:  发表于: 2012-03-16 10:30    发自: Web Page
这个 得 mark了  好东东啊
小资喝花酒,老兵坐床头.知青咏古自助游,皇上宫中愁.
剩女宅家里,萝莉嫁王侯.名媛丈夫死得早,MM在青楼.
级别: 骑士
UID: 100798
精华: 0
发帖: 188
可可豆: 1331 CB
威望: 1331 点
在线时间: 243(时)
注册时间: 2011-10-30
最后登录: 2018-06-02
8 楼:  发表于: 2012-03-16 11:35    发自: Web Page
收集啦,代码积累的过程
不忘初心,方得始终
级别: 新手上路
UID: 139536
精华: 0
发帖: 69
可可豆: 168 CB
威望: 168 点
在线时间: 22(时)
注册时间: 2012-04-27
最后登录: 2013-10-11
9 楼:  发表于: 2012-07-29 00:01    发自: Web Page
mark-----
成都梦拓科技有限公司产品涉足Android、ios、WindowsPhone、Windows8、HTML5、Unity3D等各个主流移动平台追求高质量,高性价比、 客户满意为原则!【email】 wei.sun@more-top.com【企鹅】 2-7-5-6-0-0-8-9-8【电话】 189-8097-9349

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部