时间与日期处理

http://www.cnblogs.com/wayne23/archive/2013/03/25/2981009.html

2.采用 NSDate+Helper.h分类处理时间问题

 

NSDate+Helper.h文件内容
#import <Foundation/Foundation.h>

@interface NSDate (Helper)

- (NSString *)getFormatYearMonthDay;//获取年月日如:19871127.
- (int )getWeekNumOfMonth;//返回当前月一共有几周(可能为4,5,6)
- (int )getWeekOfYear;//该日期是该年的第几周
- (NSDate *)dateAfterDay:(int)day;//返回day天后的日期(若day为负数,则为|day|天前的日期)
- (NSDate *)dateafterMonth:(int)month;//month个月后的日期

- (NSString *)elapsedTimeByNow;
- (NSUInteger)getDay;//获取日
- (NSUInteger)getMonth;//获取月
- (NSUInteger)getYear;//获取年
- (int )getHour;//获取小时
- (int)getMinute;//获取分钟
+ (int)getHour:(NSDate *)date;
+ (int)getMinute:(NSDate *)date;

- (NSUInteger)daysAgo;//在当前日期前几天
- (NSDate *)dayMidnight;
- (NSUInteger)daysAgoAgainstMidnight;//午夜时间距今几天
- (NSUInteger)daysAgoAgainstMidnight:(NSDate *)date;//午夜时间距指定日期几天
- (NSString *)stringDaysAgo;
- (NSString *)stringDaysAgoAgainstMidnight:(BOOL)flag;
- (NSUInteger)weekday;//返回一周的第几天(周末为第一天)

+ (NSDate *)dateFromString:(NSString *)string;
+ (NSDate *)dateFromString:(NSString *)string withFormat:(NSString *)format;
+ (NSString *)stringFromDate:(NSDate *)date withFormat:(NSString *)string;
+ (NSString *)stringFromDate:(NSDate *)date;
+ (NSString *)stringForDisplayFromDate:(NSDate *)date;
+ (NSString *)stringForDisplayFromDate:(NSDate *)date prefixed:(BOOL)prefixed;
+ (NSString *)stringForDisplayFromDate:(NSDate *)date prefixed:(BOOL)prefixed alwaysDisplayTime:(BOOL)displayTime;

- (NSString *)string;
- (NSString *)stringWithFormat:(NSString *)format;
- (NSString *)stringWithDateStyle:(NSDateFormatterStyle)dateStyle timeStyle:(NSDateFormatterStyle)timeStyle;

- (NSDate *)beginningOfWeek;//返回周日的的开始时间
- (NSDate *)beginningOfDay;//返回当前天的年月日.
- (NSDate *)beginningOfMonth;//返回该月的第一天
- (NSDate *)endOfMonth;//该月的最后一天
- (NSDate *)endOfWeek;//返回当前周的周末

+ (NSString *)dateFormatString;
+ (NSString *)timeFormatString;
+ (NSString *)timestampFormatString;
+ (NSString *)dbFormatString;
- (NSString *)stringWeekday;
- (NSString *)stringShortWeekday;
@end
NSDate+Helper.m文件内容
#import "NSDate+Helper.h"

static NSCalendar *calendar;
static NSDateFormatter *displayFormatter;

@implementation NSDate (Helper)

+ (void)load {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    calendar = [[NSCalendar currentCalendar] retain];
    displayFormatter = [[NSDateFormatter alloc] init];
    
[pool drain];
}

//获取年月日如:19871127.
- (NSString *)getFormatYearMonthDay
{
    NSString *string = [NSString stringWithFormat:@"%d%02d%02d",[self getYear],[self getMonth],[self getDay]];
    return string;
}
//返回当前月一共有几周(可能为4,5,6)
- (int )getWeekNumOfMonth
{
    return [[self endOfMonth] getWeekOfYear] - [[self beginningOfMonth] getWeekOfYear] + 1;
}
//该日期是该年的第几周
- (int )getWeekOfYear
{
    int i;
    int year = [self getYear];
    NSDate *date = [self endOfWeek];
    for (i = 1;[[date dateAfterDay:-7 * i] getYear] == year;i++)
        {
            }
    return i;
}

//返回day天后的日期(若day为负数,则为|day|天前的日期)
- (NSDate *)dateAfterDay:(int)day
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    // Get the weekday component of the current date
    // NSDateComponents *weekdayComponents = [calendar components:NSWeekdayCalendarUnit fromDate:self];
    NSDateComponents *componentsToAdd = [[NSDateComponents alloc] init];
    // to get the end of week for a particular date, add (7 - weekday) days
    [componentsToAdd setDay:day];
    NSDate *dateAfterDay = [calendar dateByAddingComponents:componentsToAdd toDate:self options:0];
    [componentsToAdd release];
    
    return dateAfterDay;
}
//month个月后的日期
- (NSDate *)dateafterMonth:(int)month
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *componentsToAdd = [[NSDateComponents alloc] init];
    [componentsToAdd setMonth:month];
    NSDate *dateAfterMonth = [calendar dateByAddingComponents:componentsToAdd toDate:self options:0];
    [componentsToAdd release];
    
    return dateAfterMonth;
}

//获取日
- (NSUInteger)getDay{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dayComponents = [calendar components:(NSDayCalendarUnit) fromDate:self];
    return [dayComponents day];
}
//获取月
- (NSUInteger)getMonth
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dayComponents = [calendar components:(NSMonthCalendarUnit) fromDate:self];
    return [dayComponents month];
}
//获取年
- (NSUInteger)getYear
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dayComponents = [calendar components:(NSYearCalendarUnit) fromDate:self];
    return [dayComponents year];
}

//获取小时
- (int )getHour {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags =NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit |NSHourCalendarUnit |NSMinuteCalendarUnit;
    NSDateComponents *components = [calendar components:unitFlags fromDate:self];
    NSInteger hour = [components hour];
    return (int)hour;
}
//获取分钟
- (int)getMinute {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags =NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit |NSHourCalendarUnit |NSMinuteCalendarUnit;
    NSDateComponents *components = [calendar components:unitFlags fromDate:self];
    NSInteger minute = [components

 

posted on 2015-08-10 16:58  pTrack  阅读(153)  评论(0)    收藏  举报