NSDate简介

原文:
http://blog.csdn.net/ouy_huan/article/details/7553818/

一、基本
iPhone开发中NSDate用于处理时间和日期。
示例1

/*取当前时间的秒数*/
NSTimeInterval time = [[ NSDate date ] timeIntervalSince1970 ];
long long int date = ( long long int ) time ;
NSLog (@” date\n % d ”, date );  
/*把秒数转化成yyyy-MM-dd hh:mm:ss格式*/
NSDate * dd = [ NSDate dateWithTimeIntervalSince1970 : date ];
NSLog (@” d :%@”, dd ); /*2011-01-18 03:55:49 +0000*/
/*给一个时间秒数,取出对应的时间*/
NSString * s = @” 1295355600000 ″; /*对应21:00*/
NSDate * d = [ NSDate dateWithTimeIntervalSince1970 :[ s doubleValue ]/ 1000 ];
NSLog (@” dddd :%@”, d ); /*2011-01-18 13:00:00 +0000*/
NSDateFormatter * formatter1 = [[ NSDateFormatter alloc ] init ];
[ formatter1 setDateFormat :@ "HH:mm" ];
NSString * showtimeNew = [ formatter1 stringFromDate : d ];
NSLog (@” showtimeNew :%@”, showtimeNew ); /*21:00 比d的时间 +8小时*/
[ formatter1 release ];

二、 创建或初始化可用以下方法
用于创建NSDate实例的类方法有
+ (id)date;
返回当前时间
+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
返回以当前时间为基准,然后过了secs秒的时间
+ (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;
返回以2001/01/01 GMT为基准,然后过了secs秒的时间
+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
返回以1970/01/01 GMT为基准,然后过了secs秒的时间
+ (id)distantFuture;
返回很多年以后的未来的某一天。(比如你需要一个比现在(Now)晚(大)很长时间的时间值,则可以调用该方法。测试返回了4000/12/31 16:00:00)
+ (id)distantPast;
返回很多年以前的某一天。(比如你需要一个比现在(Now)早(小)大很长时间的时间值,则可以调用该方法。测试返回了公元前0001/12/31 17:00:00)

A、用于创建NSDate实例的实例方法有

- (id)addTimeInterval:(NSTimeInterval)secs;

返回以目前的实例中保存的时间为基准,然后过了secs秒的时间

B、用于初始化NSDate实例的实例方法有

- (id)init;

初始化为当前时间。类似date方法
C、初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似dateWithTimeIntervalSinceReferenceDate:方法

- (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate;

初始化为以refDate为基准,然后过了secs秒的时间
D、初始化为以当前时间为基准,然后过了secs秒的时间

- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;


三、 日期之间比较可用以下方法
- (BOOL)isEqualToDate:(NSDate *)otherDate;
与otherDate比较,相同返回YES
- (NSDate *)earlierDate:(NSDate *)anotherDate;
与anotherDate比较,返回较早的那个日期
- (NSDate *)laterDate:(NSDate *)anotherDate;
与anotherDate比较,返回较晚的那个日期
- (NSComparisonResult)compare:(NSDate *)other;
该方法用于排序时调用:
. 当实例保存的日期值与anotherDate相同时返回NSOrderedSame
. 当实例保存的日期值晚于anotherDate时返回NSOrderedDescending
. 当实例保存的日期值早于anotherDate时返回NSOrderedAscending
四、 取回时间间隔可用以下方法
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;
以refDate为基准时间,返回实例保存的时间与refDate的时间间隔
- (NSTimeInterval)timeIntervalSinceNow;
以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔
- (NSTimeInterval)timeIntervalSince1970;
以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔
- (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回当前时间(Now)与2001/01/01 GMT的时间间隔
五、 将时间表示成字符串
- (NSString *)description;
以YYYY-MM-DD HH:MM:SS ±HHMM的格式表示时间。(其中 “±HHMM” 表示与GMT的存在多少小时多少分钟的时区差异。比如,若时区设置在北京,则 “±HHMM” 显示为 “+0800″)
六、时间转换
示例1
将date根据formatter转换成string
     
     
+( NSString *) dateToString :( NSString *) formatter date :( NSDate *) date
{
    NSDateFormatter * dateFormatter = [[[ NSDateFormatter alloc ] init ] autorelease ];
    [ dateFormatter setDateFormat : formatter ];
    return [ dateFormatter stringFromDate : date ];
}

示例2
string类型的时间戳转换成时间

+( NSString *) dateStringToString :( NSString *) dateStr
{
    if ([ dateStr isKindOfClass :[ NSNull class ]]) {
        return nil ;
    }
    else {
        NSInteger time = [ dateStr intValue ];
        NSDate * date = [ NSDate dateWithTimeIntervalSince1970 : time ];
        NSString * timestr = [ NSString stringWithFormat :@ "%@" , date ];
        NSRange rang ;
        rang . location = 0 ;
        rang . length = 10 ;
        NSString * needtime = [ timestr substringWithRange : rang ];
        return needtime ;
    }
}

示例3
将日期从原格式转换成需要的格式

+( NSString *) convertDateFormatter :( NSString *) sourceFormatter 
                  targetFormatter :( NSString *) targetFormatter  
                       dateString :( NSString *) dateString
{   
    NSDateFormatter * dateFormatter = [[[ NSDateFormatter alloc ] init ] autorelease ];
    [ dateFormatter setDateFormat : sourceFormatter ];
    NSDate * date = [ dateFormatter dateFromString : dateString ];
    [ dateFormatter setDateFormat : targetFormatter ];
    return [ dateFormatter stringFromDate : date ];
}

示例4
将日期字符串转换成date

+( NSDate *) stringToDate :( NSString *) formatter dateString :( NSString *) dateString {
  NSDateFormatter * dateFormatter = [[[ NSDateFormatter alloc ] init ] autorelease ];
  [ dateFormatter setDateFormat : formatter ];
  return [ dateFormatter dateFromString : dateString ];
}

示例5
时间戳转换成时间
                NSInteger time = [[dic objectForKey:@"press_date"] intValue];
                NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];
                NSString *timestr = [NSString stringWithFormat:@"%@",date];
                NSRange rang;
                rang.location = 0;
                rang.length = 10;
                NSString *needtime = [timestr substringWithRange:rang];
结束!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值