0

グルジア暦年(2013)のすべての日付をリスト(NSLog)したいと思います。私は以下を使用して現在の日付を取得することができました:

    NSCalendar*       calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents* components = [calendar components:NSDayCalendarUnit
                                               fromDate:currDate];
    NSInteger  day = [components day];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    NSString *dateString = [dateFormatter stringFromDate:currDate];
    NSLog(@"%@", dateString);

2013年のすべての日付を印刷するにはどうすればよいですか?

4

2 に答える 2

3
NSDateFormatter* dateFormatter = [NSDateFormatter new] ;
dateFormatter.dateStyle = NSDateFormatterLongStyle ;

NSDate* today = [NSDate date] ;
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] ;
NSDateComponents* thisYearComponents = [calendar components:NSYearCalendarUnit fromDate:today] ;
NSDate* firstDateInThisYear = [calendar dateFromComponents:thisYearComponents] ;

NSDateComponents* addDaysComponents = [NSDateComponents new] ;
addDaysComponents.day = 0 ;

while ( TRUE ) {
    NSDate* nextDateInThisYear = [calendar dateByAddingComponents:addDaysComponents toDate:firstDateInThisYear options:0] ;
    NSDateComponents* yearOfNextDateComponents = [calendar components:NSYearCalendarUnit fromDate:nextDateInThisYear] ;
    if ( yearOfNextDateComponents.year == thisYearComponents.year )
        NSLog(@"%@", [dateFormatter stringFromDate:nextDateInThisYear]) ;
    else
        break ;
    addDaysComponents.day += 1 ;
}

WWDC 2011セッション117-カレンダー計算の実行は、優れた情報源です。n最後に使用した日付に1日を繰り返し追加するのではなく、ループで固定の参照日に日を追加する方がよい理由について説明します。

また、夏時間によって特定の場所の特定の日付に深夜が存在しないため、時刻を気にしないNSDateには、深夜(12am)ではなく正午(12pm)を使用することをお勧めします。しかし、私の例では、わざわざそうすることはしませんでした。

于 2013-01-31T16:58:34.910 に答える
-1
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:@"2013-01-01"];


NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *components = [calendar components:kCFCalendarUnitYear fromDate:date];

while ([components year] < 2014) {
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateStyle:NSDateFormatterLongStyle];
    NSString *dateString = [dateFormatter1 stringFromDate:date];
    NSLog(@"%@", dateString);
    date = [NSDate dateWithTimeInterval:60*60*24 sinceDate:date];
    components = [calendar components:kCFCalendarUnitYear fromDate:date];
}
于 2013-01-31T17:06:07.237 に答える