質問

今日の日付のコンポーネントをnsdatecomponentで設定しようとしています。

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:1];
    [comps setHour:1];
    [comps setMinute:44];
    NSCalendar *cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    NSDate *date = [cal dateByAddingComponents:comps toDate:[NSDate date] options:0];
    [comps release];
    NSLog(@"%@", date);
.

しかし、この例では現在の日付に時間を追加します。今、私がやりたいことは1日追加されますが、時刻と分を指定された値に設定します(追加なし)。どうやってこれを行うことができますか?

役に立ちましたか?

解決

これは最後に機能しました:

NSDateComponents *comp = [[NSCalendar currentCalendar] components:NSYearCalendarUnit
NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
[comp setDay:[comp day] +1];
[comp setHour: 12];
[comp setMinute: 00];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comp];
.

他のヒント

Easy:dateプロパティを使用してください...

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:1];
[comps setHour:1];
[comps setMinute:44];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
.

編集:カレンダーを忘れました。マニュアルから(太字のNSDateComponentsの1ページ):

重要:NSDateComponentsオブジェクトはそれ自体では意味がありません。あなたはそれがどんなカレンダーと解釈されるかを知る必要があります、そしてあなたはその値が単位の絶対値、または単位の量であるかどうかを知る必要があります。

それを使う方法の例もあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top