NSDateComponents упаковка

Вот установка:

NSDateComponents* temporalComponents;

temporalComponents = [theDateComponents copy];  //another component set to todays date.

[temporalComponents setDay:   [temporalComponents day] + (offset * 7)]

если я выведу результат компонентов, это показывает, что дни добавлены правильно, например, 21 день.

"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 2\n    Day: 49\n    Hour: 13\n    Minute: 12"

но, конечно, я хочу, чтобы у него был этот исправленный "обернутый" список компонентов, в котором месяц увеличивается, а день исправляется.. (главным образом потому, что я делаю дальнейшие манипуляции, где я могу заменить целый компонент, а не просто добавить в компонент) другими словами, мой конечный продукт - NSDateComponent, так что им можно манипулировать дальше.

"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 3\n    Day: 20\n    Hour: 13\n    Minute: 12"

сейчас я делаю это, чтобы правильно обернуть дни (и что еще нужно обернуть)

NSDate* tempDate = [CURRENTC dateFromComponents:temporalComponents];

temporalComponents2 = [CURRENTC components:unitFlags fromDate:tempDate];

[theDatesArray addObject: temporalComponents2];

есть ли лучший способ? без необходимости идти на свидание, и вернуться к компоненту. Я искал лучший путь без успеха, возможно, я искал с неправильными терминами.

1 ответ

Предоставленное средство для добавления заданного смещения к заданной дате заключается в использовании NSCalendar "s dateByAddingComponents:toDate:options:, Так что вы бы сделали что-то вроде этого:

NSDateComponents *daysToAdd = [[[NSDateComponents alloc] init] autorelease];
daysToAdd.day = 23;

NSDate *derivedData =
      [CURRENTC dateByAddingComponents:daysToAdd
                toDate:sourceDate
                options:NSWrapCalendarComponents];

С неявным предположением, что вы обычно храните вещи как NSDate х, с NSDateComponents быть помощником, который позволяет вам манипулировать ими относительно данного NSCalendar,

Так что в вашем случае я не думаю, что вы можете добиться большего, чем вы делаете, потому что вы используете то, что Apple считает помощником в качестве фактического хранилища.

Другие вопросы по тегам