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