iOS:在两个特定日期之间的每个月创建一个NSDate对象

时间:2014-05-14 14:47:59

标签: ios objective-c parsing nsdate recurring

所以我想在两个日期之间为每个月创建一个对象..

开始时间:01/08/2012

结束:02/10/2012

将是两个月,所以我愿意列出:

01/09/2012 01/10/2012

..准备让我为每个推送到Parse(.com)的人创建一个NSDate ..

这是我到目前为止所得到的:

    NSString *start = @"2010-09-15";
    NSString *end = @"2011-07-15";

    NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [f dateFromString:start];
    NSDate *endDate = [f dateFromString:end];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSMonthCalendarUnit
                                                        fromDate:startDate
                                                          toDate:endDate
                                                         options:0];

    int i=0;

    for (i = 0; i < [components month]; i++)
    {

        NSLog(@"%i", i+1);

        NSDateFormatter *df = [NSDateFormatter new];
        // change locale if the standard is not what you want
        NSArray *monthNames = [df standaloneMonthSymbols];
        NSString *monthName = [monthNames objectAtIndex:(i)];

        NSLog(@"Month name: %@", monthName);

    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你有正确的想法。您有代码将开始日期字符串转换为NSDate,并计算两个日期之间的月数。大概你要发送到parse.com的是相同格式的日期字符串,对吗?

让我们调用开始日期和结束日期monthCount之间的月份数。

在这种情况下,在for循环中,您应该使用NSCalendar方法dateByAddingComponents:toDate:options:添加0 - &gt; monthCount到日期,然后使用日期格式化程序的stringFromDate方法将该日期转换为日期字符串。