NSDate实例的类方法

1. 创建或初始化可用以下方法

    用于创建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

 

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

    - (id)addTimeInterval:(NSTimeInterval)secs;

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

 

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

    - (id)init;

    初始化为当前时间。类似date方法

 

    - (id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;

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

 

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

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

 

    - (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;

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

 

 

2. 日期之间比较可用以下方法

    - (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

 

 

3. 取回时间间隔可用以下方法

    - (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的时间间隔

 

 

4. 将时间表示成字符串

    - (NSString *)description;

    YYYY-MM-DD HH:MM:SS ±HHMM的格式表示时间。

    其中 "±HHMM" 表示与GMT的存在多少小时多少分钟的时区差异。比如,若时区设置在北京,则 "±HHMM" 显示为 "+0800"



    NSDateFormatter *formatter =[[NSDateFormatter alloc] init] ; 

    NSDate *date = [NSDate date]; 

    [formatter setTimeStyle:NSDateFormatterMediumStyle]; 

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] ; 

    NSDateComponents *comps = [[NSDateComponents alloc] init]; 

    NSInteger unitFlags = NSYearCalendarUnit | 

    NSMonthCalendarUnit 

    NSDayCalendarUnit 

    NSWeekdayCalendarUnit 

    NSHourCalendarUnit 

    NSMinuteCalendarUnit 

    NSSecondCalendarUnit

    //int week=0; 

    comps = [calendar components:unitFlags fromDate:date]; 

    int weekk = [comps weekday]; 

    int year=[comps year]; 

    int month = [comps month]; 

    int day = [comps day]; 

    //[formatter setDateStyle:NSDateFormatterMediumStyle]; 

    //This sets the label with the updated time. 

    int hour = [comps hour]; 

    int min = [comps minute]; 

    int sec = [comps second]; 

    NSLog(@"week%d",weekk); 

    NSLog(@"year%d",year); 

    NSLog(@"month%d",month); 

    NSLog(@"day%d",day); 

    NSLog(@"hour%d",hour); 

    NSLog(@"min%d",min); 

    NSLog(@"sec%d",sec); 

结果:

 

2012-10-12 16:23:24.372 Calendarproject[5640:14203] pushState

2012-10-12 16:23:24.374 Calendarproject[5640:14203] week6

2012-10-12 16:23:24.375 Calendarproject[5640:14203] year2012

2012-10-12 16:23:24.375 Calendarproject[5640:14203] month10

2012-10-12 16:23:24.376 Calendarproject[5640:14203] day12

2012-10-12 16:23:24.376 Calendarproject[5640:14203] hour16

2012-10-12 16:23:24.376 Calendarproject[5640:14203] min23

2012-10-12 16:23:24.377 Calendarproject[5640:14203] sec24

#################################################

    

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];

    //[dateFormatter setDateFormat:@"hh:mm:ss"]

    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];

    NSLog(@"Date%@", [dateFormatter stringFromDate:[NSDate date]]);

结果:

2012-10-12 16:23:24.378 Calendarproject[5640:14203] Date2012-10-12 16:23:24.378

##################################################


    NSDate* toDate1 = [[NSDate alloc] initWithString:@"2520-9-26 17:10:00 +0600" ];

    NSTimeInterval distance = [ toDate1 timeIntervalSinceNow ];

    NSTimeInterval iDat = distance / ( 86400 ) ;

    NSLog@" From now to %@ diff: %f ", [toDate1 description ], iDat );

结果:

2012-10-12 16:23:24.379 Calendarproject[5640:14203]  From now to 2520-09-26 11:10:00 +0000 diff: 185527.115690 

#################################################

    NSDate* toDate = [ [ NSDate allocinitWithString:@"2009-9-29 0:0:00 +0600" ];

    NSDate* startDate = [ [ NSDate allocinit ];

    NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSGregorianCalendar];

    

    NSUInteger uuuunitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit |

    NSSecondCalendarUnit | NSDayCalendarUnit

    | NSMonthCalendarUnit | NSYearCalendarUnit;

    

    NSDateComponents *cps = [ chineseClendar components:uuuunitFlags fromDate:startDate toDate:toDateoptions:0];

    NSInteger diffHour = [ cps hour ];

    NSInteger diffMin = [ cps minute ];

    NSInteger diffSec = [ cps second ];

    NSInteger diffDay = [ cps day ];

    NSInteger diffMon = [ cps month ];

    NSInteger diffYear = [ cps year ];

    NSLog( @" From Now to %@, diff: Years: %d Months: %d, Days; %d, Hours: %d, Mins:%d, sec:%d",

          [toDate description], diffYear, diffMon, diffDay, diffHour, diffMin,diffSec );

结果:

2012-10-12 16:23:24.380 Calendarproject[5640:14203]  From Now to 2009-09-28 18:00:00 +0000, diff: Years: -3 Months: 0, Days; -13, Hours: -14, Mins:-23, sec:-24

################################################


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值