//NSString转NSDate
+(NSDate *)dateFromString:(NSString *)dateString DateFormat:(NSString *)DateFormat{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:DateFormat];
NSDate *destDate= [dateFormatter dateFromString:dateString];
return destDate;
}
//获取年月日对象
+(NSDateComponents *)getDateComponents:(NSDate *)date {
NSCalendar *calendar = [NSCalendar currentCalendar];
// [calendar setFirstWeekday:2]; //设置每周的开始是星期一
// [calendar setMinimumDaysInFirstWeek:7]; //设置一周至少需要几天
return [calendar components:
NSYearCalendarUnit|
NSMonthCalendarUnit|
NSDayCalendarUnit|
NSWeekOfYearCalendarUnit|
NSQuarterCalendarUnit fromDate:date];
}
//获得某年的周数
+(NSInteger)getWeek_AccordingToYear:(NSInteger)year {
NSDateComponents *comps = [DataTimeTool getDateComponents:[DataTimeTool dateFromString:[NSString stringWithFormat:@"%ld-12-31",year] DateFormat:@"yyyy-MM-dd"]];
NSInteger week = [comps weekOfYear];
if (week == 1) {
return 52;
}else {
return week;
}
}
/**
* 获取某年某周的范围日期
*
* @param year 年份
* @param weekofYear year里某个周
*
* @return 时间范围字符串
*/
+(NSString*)getWeekRangeDate_Year:(NSInteger)year WeakOfYear:(NSInteger)weekofYear
{
NSString *weekDate = @"";
NSString *timeAxis = [NSString stringWithFormat:@"%ld-06-01 12:00:00",(long)year];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:timeAxis];
NSCalendar *calendar = [NSCalendar currentCalendar];
/**这两个参数的设置影响着周次的个数和划分*****************/
[calendar setFirstWeekday:2]; //设置每周的开始是星期一
// [calendar setMinimumDaysInFirstWeek:7]; //设置一周至少需要几天
NSDateComponents *comps = [calendar components:(NSCalendarUnitWeekOfYear | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay)
fromDate:date];
//时间轴是当前年的第几周
NSInteger todayIsWeek = [comps weekOfYear];
if ([DataTimeTool getWeek_AccordingToYear:year] == 53) {
todayIsWeek += 1;
}
//获取时间轴是星期几 1(星期天) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
NSInteger todayIsWeekDay = [comps weekday];
// 计算当前日期和这周的星期一和星期天差的天数
//firstDiff 星期一相差天数 、 lastDiff 星期天相差天数
long firstDiff,lastDiff;
if (todayIsWeekDay == 1) {
firstDiff = -6;
lastDiff = 0;
}else
{
firstDiff = [calendar firstWeekday] - todayIsWeekDay;
lastDiff = 8 - todayIsWeekDay;
}
NSDate *firstDayOfWeek= [NSDate dateWithTimeInterval:24*60*60*firstDiff sinceDate:date];
NSDate *lastDayOfWeek= [NSDate dateWithTimeInterval:24*60*60*lastDiff sinceDate:date];
long weekdifference = weekofYear - todayIsWeek;
firstDayOfWeek= [NSDate dateWithTimeInterval:24*60*60*7*weekdifference sinceDate:firstDayOfWeek];
lastDayOfWeek= [NSDate dateWithTimeInterval:24*60*60*7*weekdifference sinceDate:lastDayOfWeek];
weekDate = [NSString stringWithFormat:@"(%@~%@)",[DataTimeTool stringFromDate:firstDayOfWeek DateFormat:@"y年M月d日"],[DataTimeTool stringFromDate:lastDayOfWeek DateFormat:@"y年M月d日"]];
//weekDate = [NSString stringWithFormat:@"第%ld周(%@-%@)",weekofYear,[DataTimeTool stringFromDate:firstDayOfWeek DateFormat:@"yyyy年M月d号"],[DataTimeTool stringFromDate:lastDayOfWeek DateFormat:@"yyyy年M月d号"]];
return weekDate;
}
还没有评论,来说两句吧...