我有一个概念在特定月份获得所有星期天
我有一个数组,其中包含月份和年份
array=(Septmeber 2013, October 2013,January 2013,July 2013,May 2013)
现在通过保持这个数组我希望在阵列月份中获得所有星期日(星期日日期),我的阵列是动态的,所以根据月份,我需要所有星期天
EG: 如果数组是2013年9月的
mynewarray =(2013年9月1日,2013年9月8日,2013年9月15日,2013年9月15日,2013年9月22日,2013年9月29日)
我想要一个像这种格式的新数组
请帮助
提前致谢....
答案 0 :(得分:4)
好的,假设您还希望输出为“2013年9月1日”格式的字符串数组......
// Input array
NSArray *array = @[@"September 2013", @"February 2013", @"October 2013", @"January 2013", @"July 2013", @"May 2013"];
// Output array
NSMutableArray *output = [NSMutableArray array];
// Setup a date formatter to parse the input strings
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
inputFormatter.dateFormat = @"MMMM yyyy";
// Setup a date formatter to format the output strings
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
outputFormatter.dateFormat = @"MMMM d yyyy";
// Gregorian calendar for use in the loop
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// Iterate each entry in the array
for (NSString *monthYear in array)
{
@autoreleasepool
{
// Parse the entry to get the date at the start of each month and it's components
NSDate *startOfMonth = [inputFormatter dateFromString:monthYear];
NSDateComponents *dateComponents = [calendar components:NSMonthCalendarUnit | NSYearCalendarUnit fromDate:startOfMonth];
// Iterate the days in this month
NSRange dayRange = [calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:startOfMonth];
for (ushort day = dayRange.location; day <= dayRange.length; ++day)
{
@autoreleasepool
{
// Assign the current day to the components
dateComponents.day = day;
// Create a date for the current day
NSDate *date = [calendar dateFromComponents:dateComponents];
// Sunday is day 1 in the Gregorian calendar (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDateComponents_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDateComponents/weekday)
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:date];
if (components.weekday == 1)
{
[output addObject:[outputFormatter stringFromDate:date]];
}
}
}
}
}
NSLog(@"%@", output);
// Release inputFormatter, outputFormatter, and calendar if not using ARC
可能有更好的方法可以做到这一点,我对此并不满意,但它确实起到了作用。