获取当前年月日与日期的封装

获取当月,今年:
spa

NSInteger toMonth = [[NSDate date] YMDComponents].month;.net

NSInteger toYear = [[NSDate date] YMDComponents].year;3d


- (NSDateComponents *)YMDComponents /**<获取年月日对象*/component

{orm

    return [[NSCalendar currentCalendar] components:对象

            NSCalendarUnitYear|字符串

            NSCalendarUnitMonth|get

            NSCalendarUnitDay fromDate:self];input

}string



新建objective-C文件------选择category(类别)

 *  @brief  日期格式处理封装

.h文件:

@interface NSDate (WQCalendarLogic)

- (NSDate *)firstDayOfCurrentYear;/**<当年首日*/


- (NSDate *)firstDayOfCurrentMonth;/**<当月首日*/


- (NSDate *)dayFormerePreviousYear;/**<上一年*/


- (NSDate *)dayFormerePreviousWithYear:(NSInteger)yearNum;/**<上几年*/


- (NSDate *)dayLastPreviousYear;/**<下一年*/


- (NSDate *)dayInThePreviousMonth;/**<上一个月*/


- (NSDate *)dayInThePreviousWithMonth:(NSInteger)monthNum;/**<当前一个月之前的第monthNum个月*/


- (NSDateComponents *)YMDComponents;/**<获取年月日对象*/


+ (NSDate *)dateFromString:(NSString *)dateString;/**<NSStringNSDate*/


/**

 *  将传入日期字符串转成日期

 *  @param  dateString 日期字符串

 *  @param  format     传入日期的日期格式

 *  @return  日期

 */

+ (NSDate *)dateFromString:(NSString *)dateString withFormat:(NSString *)format;


- (NSString *)stringFromDate:(NSString *) formatString;/**<NSDate(所需格式的)NSString*/


/**

 *  将日期字符串转成制定格式的日期字符串

 *  @param dateString   日期字符串

 *  @param dateString   日期字符串的日期格式

 *  @param formatString 转换后的日期格式

 *  @return 转换后的日期字符串

 */

+ (NSString *)stringFormString:(NSString *)dateString withDateStringFormat:(NSString *)dateFormate withFormat:(NSString *)formatString;


/**

 *  给你一个方法,输入参数是NSDate,输出结果是星期几的字符串

 *  @param inputDate 日期date

 *  @return 星期几

 */

+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate;


/**

 *  返回所给日期的几天后的日期

 *  @param days 天数

 *  @return 几天后的日期

 */

- (NSDate *)getLasterDay:(NSInteger)days;


@end


.m文件:

#import "NSDate+WQCalendarLogic.h"


@implementation NSDate (WQCalendarLogic)


- (NSDate *)firstDayOfCurrentYear /**<当年首日*/

{

    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:self];

    dateComponents.month = 1;

    dateComponents.day = 1;

    return [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

}


- (NSDate *)firstDayOfCurrentMonth /**<当月首日*/

{

    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:self];

    dateComponents.month = [[NSDate date] YMDComponents].month;

    dateComponents.day = 1;

    return [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

}


- (NSDate *)dayFormerePreviousYear /**<上一年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = -1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayFormerePreviousWithYear:(NSInteger)yearNum /**<上几年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = yearNum;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayLastPreviousYear /**<下一年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = +1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayInThePreviousMonth /**<上一个月*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.month = -1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayInThePreviousWithMonth:(NSInteger)monthNum /**<当前一个月之前的第monthNum个月*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.month = -monthNum;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDateComponents *)YMDComponents /**<获取年月日对象*/

{

    return [[NSCalendar currentCalendar] components:

            NSCalendarUnitYear|

            NSCalendarUnitMonth|

            NSCalendarUnitDay fromDate:self];

}


+ (NSDate *)dateFromString:(NSString *)dateString /**<NSStringNSDate*/

{

    

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

//    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];

    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm"];

    

    NSDate *destDate = [dateFormatter dateFromString:dateString];

    

    return destDate;

    

}


+ (NSDate *)dateFromString:(NSString *)dateString withFormat:(NSString *)format

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:format];

    NSDate *destDate = [dateFormatter dateFromString:dateString];

    

    return destDate;

}


- (NSString *)stringFromDate:(NSString *) formatString /**<NSDate(所需格式的)NSString*/

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

    //zzz表示时区,zzz能够删除,这样返回的日期字符将不包含时区信息。

    

//    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];

    [dateFormatter setDateFormat:formatString];

    

    NSString *destDateString = [dateFormatter stringFromDate:self];

    

    return destDateString;

}


+ (NSString *)stringFormString:(NSString *)dateString withDateStringFormat:(NSString *)dateFormate withFormat:(NSString *)formatString

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

    [dateFormatter setDateFormat:dateFormate];

    

    NSDate *destDate = [dateFormatter dateFromString:dateString];

//    NSDate *date = [self dateFromString:dateString];

    return [destDate stringFromDate:formatString];

}


//给你一个方法,输入参数是NSDate,输出结果是星期几的字符串。

+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate

{

    NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期日", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];

    

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

    

    NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Beijing"];

    

    [calendar setTimeZone: timeZone];

    

    NSCalendarUnit calendarUnit = NSWeekdayCalendarUnit;

    

    NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];

    

    return [weekdays objectAtIndex:theComponents.weekday];

}


- (NSDate *)getLasterDay:(NSInteger)days

{


    NSDateComponents *comps = [[NSDateComponents alloc] init];

    comps.day = days;

    

    NSLog(@"%ld:%ld:%ld", comps.year, comps.month,comps.day);

    return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:self options:0];

    

}


@end

相关文章
相关标签/搜索