现在的位置: 首页 > 综合 > 正文

ios 操作日期NSDate

2014年01月11日 ⁄ 综合 ⁄ 共 4252字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.