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 считает помощником в качестве фактического хранилища.