1.获取当天的日期
NSDate *today=[NSDate date];
2.获取当天是星期几
NSDateFormatter *form= [[NSDateFormatter alloc] init]; [form setDateFormat:@"EEEE"]; NSString *week = [form stringFromDate:[NSDate date]]; NSLog(@"week: ->>%@",week);
3.将NSDate格式化日期为字符串
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]]; [formatter setDateFormat:@"yyyy年M月d日"]; NSString *dateStr=[formatter stringFromDate:date]; NSLog(@"dateStr ->>%@",dateStr);
4.将字符串日期转换为NSDate
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]]; [formatter setDateFormat:@"yyyy年M月d日"]; NSString *dateStr=@"2012年12月8日"; NSDate *date=[formatter dateFromString:dateStr]; NSLog(@"date ->>%@",date);
5.获取两个日期之间的总天数
NSDate *startDate=[NSDate date]; NSDate *endDate=[info objectForKey:@"date"]; NSInteger days = [endDate daysIntervalSince:startDate]; remainTime.text=[NSString stringWithFormat:@"%d", days];;
使用这种方法得用自定义的一个类: #import
"NSDate+Convience.h"
下面是这个类的文件:
// NSDate+Convience.h #import <Foundation/Foundation.h> @interface NSDate (Convience) - (NSUInteger)numberOfDaysInMonth; - (NSUInteger)firstWeekDayInMonth; - (NSUInteger)year; - (NSUInteger)month; - (NSUInteger)day; - (NSDate *)offsetMonth:(NSInteger)months; - (BOOL)isMonthBefore:(NSDate *)date; - (BOOL)isBetween:(NSDate *)startDate and:(NSDate *)endDate; - (NSInteger)daysIntervalSince:(NSDate *)date; @end
// NSDate+Convience.m #import "NSDate+Convience.h" @implementation NSDate (Convience) - (NSUInteger)numberOfDaysInMonth { NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange range = [calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:self]; return range.length; } - (NSUInteger)firstWeekDayInMonth { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setFirstWeekday:2]; // monday NSDateComponents *compoments = [gregorian components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:self]; [compoments setDay:1]; NSDate *date = [gregorian dateFromComponents:compoments]; return [gregorian ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:date]; } - (NSUInteger)year { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self]; return [components year]; } - (NSUInteger)month { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self]; return [components month]; } - (NSUInteger)day { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self]; return [components day]; } - (NSDate *)offsetMonth:(NSInteger)months { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setFirstWeekday:2]; NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setMonth:months]; return [gregorian dateByAddingComponents:offsetComponents toDate:self options:0]; } - (BOOL)isMonthBefore:(NSDate *)date { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy"]; int year1 = [[formatter stringFromDate:self] integerValue]; int year2 = [[formatter stringFromDate:date] integerValue]; [formatter setDateFormat:@"M"]; int month1 = [[formatter stringFromDate:self] integerValue]; int month2 = [[formatter stringFromDate:date] integerValue]; if (year2 > year1) { return YES; } if (year1 == year2) { if (month2 > month1) { return YES; } } return NO; } - (BOOL)isBetween:(NSDate *)startDate and:(NSDate *)endDate { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setFirstWeekday:2]; NSDateComponents *components = [gregorian components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:startDate toDate:self options:0]; if (components.year >= 0 && components.month >= 0 && components.day >= 0) { components = [gregorian components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:endDate toDate:self options:0]; if (components.year <= 0 && components.month <= 0 && components.day <= 0) { return YES; } } return NO; } - (NSInteger)daysIntervalSince:(NSDate *)date { NSTimeInterval interval = [self timeIntervalSinceDate:date]; NSInteger days = ceilf(interval/(60*60*24)); return days; } @end