object c小代码——日期篇

1、判断两个日期是否是同一天,不要求小时,分钟要一样

   用法

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



BOOL datesAreEqual = [calendar isDate:firstDate equalToDate:secondDate toUnitGranularity:NSDayCalendarUnit];

NSCalendar+equalWithGranularity.h

#import <Foundation/Foundation.h>



@interface NSCalendar (equalWithGranularity)



- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity;



@end

NSCalendar+equalWithGranularity.m

#import "NSCalendar+equalWithGranularity.h"



@implementation NSCalendar (equalWithGranularity)



- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity {



    if ([date1 isEqualToDate:date2]) {

        return YES;

    }

    int componentFlags = [self componentFlagsWithGranularity:granularity];

    date1 = [self dateFromDate:date1 withComponentFlags:componentFlags];

    date2 = [self dateFromDate:date2 withComponentFlags:componentFlags];

    return [date1 isEqualToDate:date2];



}

- (int)componentFlagsWithGranularity:(NSCalendarUnit)granularity

{

    int componentFlags = 0;

    for (int i = 1<<1 ; i <= granularity ; i = i<<1) {



        componentFlags = componentFlags | i;

    }

    return componentFlags;



}

- (NSDate *)dateFromDate:(NSDate *)date withComponentFlags:(int)componentFlags {



    NSDateComponents *components = [self components:componentFlags fromDate:date];

    return [self dateFromComponents:components];

}

@end

2、时间若干操作

1 // 当前时间创建NSDate



NSDate *myDate = [NSDate date];



NSLog(@"myDate = %@",myDate);



2 //从现在开始的24小时



NSTimeInterval secondsPerDay = 24*60*60;



NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];



NSLog(@"myDate = %@",tomorrow);



3//根据已有日期创建日期



NSTimeInterval secondsPerDay1 = 24*60*60;



NSDate *now = [NSDate date];



NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];



NSLog(@"yesterDay = %@",yesterDay);



4//比较日期



BOOL sameDate = [now isEqualToDate:yesterDay];



NSLog(@"sameDate = %lu",sameDate);



4.1//获取较早的日期



NSDate *earlierDate = [yesterDay earlierDate:now];



NSLog(@"earlierDate = %@",earlierDate);



4.2//较晚的日期



NSDate *laterDate = [yesterDay laterDate:now];



NSLog(@"laterDate = %@",laterDate);



//两个日期之间相隔多少秒



NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now];



NSLog(@"secondsBetweenDates= %lf",secondsBetweenDates);



//通过NSCALENDAR类来创建日期



NSDateComponents *comp = [[NSDateComponentsalloc]init];



[comp setMonth:06];



[comp setDay:01];



[comp setYear:2001];



NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];



NSDate *myDate1 = [myCal dateFromComponents:comp];



NSLog(@"myDate1 = %@",myDate1);



//从已有日期获取日期



unsigned units = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;



NSDateComponents *comp1 = [myCal components:units fromDate:now];



NSInteger month = [comp1 month];



NSInteger year = [comp1 year];



NSInteger day = [comp1 day];



//NSDateFormatter实现日期的输出



NSDateFormatter *formatter = [[NSDateFormatteralloc]init];



[formatter setDateStyle:NSDateFormatterFullStyle];//直接输出的话是机器码



//或者是手动设置样式[formatter setDateFormat:@"yyyy-mm-dd"];



NSString *string = [formatter stringFromDate:now];



NSLog(@"string = %@",string);



NSLog(@"formater = %@",formatter);

 

转自 http://www.cnblogs.com/xdream86/archive/2012/12/17/2821305.html,感谢原作者的整理收集

你可能感兴趣的:(object)