0

セットアップは次のとおりです。

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];

何か良い方法はありますか?日付に行ったり、コンポーネントに戻ったりする必要はありません。私は成功せずにもっと良い方法を探しました。おそらく間違った用語で検索しています。

4

1 に答える 1

0

与えられた日付に与えられたオフセットを追加するための提供された手段は、 を使用することNSCalendarですdateByAddingComponents:toDate:options:。したがって、次のようにします。

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

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

暗黙の前提として、通常は物を として格納しNSDateNSDateComponents指定された に対してそれらを操作できるようにするヘルパーを使用しますNSCalendar

したがって、あなたの場合、Appleがヘルパーを実際のストレージと見なしているものを使用しているため、あなたがやっている以上のことはできないと思います。

于 2012-02-28T20:57:34.853 に答える