得到当前年、月、周的第一天和最后一天

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

话不多说,上代码

////EBDate.h//ChargeMoney////Created by eagle on 15-3-24.//Copyright (c) 2015年 EagleB. All rights reserved.//#import<Foundation/Foundation.h>@interfaceEBDate : NSObject/**

* 得到这个周的第一天和最后一天*/+(NSArray *)getFirstAndLastDayOfThisWeek;/**

* 得到这个月的第一天和最后一天*/+(NSArray *)getFirstAndLastDayOfThisMonth;/**

* 得到今天的第一天和最后一天*/+(NSArray *)getFirstAndLastDayOfThisYear;@end

////EBDate.m//ChargeMoney////Created by eagle on 15-3-24.//Copyright (c) 2015年 EagleB. All rights reserved.//#import"EBDate.h"@implementationEBDate+(NSArray *)getFirstAndLastDayOfThisWeek

{

NSCalendar*calendar =[NSCalendar currentCalendar];

NSDateComponents*dateComponents = [calendar components:NSWeekdayCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit |NSYearCalendarUnit fromDate:[NSDate date]];

NSInteger weekday= [dateComponents weekday];//第几天(从sunday开始)NSInteger firstDiff,lastDiff;if(weekday ==1) {

firstDiff= -6;

lastDiff=0;

}else{

firstDiff= - weekday +2;

lastDiff=8-weekday;

}

NSInteger day=[dateComponents day];

NSDateComponents*firstComponents = [calendar components:NSWeekdayCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit |NSYearCalendarUnit fromDate:[NSDate date]];

[firstComponents setDay:day+firstDiff];

NSDate*firstDay =[calendar dateFromComponents:firstComponents];

NSDateComponents*lastComponents = [calendar components:NSWeekdayCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit |NSYearCalendarUnit fromDate:[NSDate date]];

[lastComponents setDay:day+lastDiff];

NSDate*lastDay =[calendar dateFromComponents:lastComponents];return[NSArray arrayWithObjects:firstDay,lastDay, nil];

}+(NSArray *)getFirstAndLastDayOfThisMonth

{

NSCalendar*calendar =[NSCalendar currentCalendar];

NSDate*firstDay;

[calendar rangeOfUnit:NSMonthCalendarUnit startDate:&firstDay interval:nil forDate:[NSDate date]];

NSDateComponents*lastDateComponents = [calendar components:NSMonthCalendarUnit | NSYearCalendarUnit |NSDayCalendarUnit fromDate:firstDay];

NSUInteger dayNumberOfMonth=[calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]].length;

NSInteger day=[lastDateComponents day];

[lastDateComponents setDay:day+dayNumberOfMonth-1];

NSDate*lastDay =[calendar dateFromComponents:lastDateComponents];return[NSArray arrayWithObjects:firstDay,lastDay, nil];

}+(NSArray *)getFirstAndLastDayOfThisYear

{//通过2月天数的改变,来确定全年天数NSDateFormatter *formatter =[[NSDateFormatter alloc] init];

[formatter setTimeZone:[NSTimeZone systemTimeZone]];

[formatter setDateFormat:@"yyyy"];

NSString*dateStr =[formatter stringFromDate:[NSDate date]];

dateStr= [dateStr stringByAppendingString:@"-02-14"];

[formatter setDateFormat:@"yyyy-MM-dd"];

NSDate*aDayOfFebruary =[formatter dateFromString:dateStr];

NSCalendar*calendar =[NSCalendar currentCalendar];

NSDate*firstDay;

[calendar rangeOfUnit:NSYearCalendarUnit startDate:&firstDay interval:nil forDate:[NSDate date]];

NSDateComponents*lastDateComponents = [calendar components:NSMonthCalendarUnit | NSYearCalendarUnit |NSDayCalendarUnit fromDate:firstDay];

NSUInteger dayNumberOfFebruary=[calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:aDayOfFebruary].length;

NSInteger day=[lastDateComponents day];

[lastDateComponents setDay:day+337+dayNumberOfFebruary-1];

NSDate*lastDay =[calendar dateFromComponents:lastDateComponents];return[NSArray arrayWithObjects:firstDay,lastDay, nil];

}@end

感谢这篇文章:http://my.oschina.net/yongbin45/blog/156181

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航