获取当月,今年:
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;/**<NSString转NSDate*/
/**
* 将传入日期字符串转成日期
* @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 /**<NSString转NSDate*/
{
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