0

私は自分のアプリの 1 つで、しかしを見つけました。問題は、計算(問題の日を意味する)を使用initWithTimeIntervalSinceNowして追加するメニューで日を計算していることです。(day*X)X

ただし、CEST タイムゾーンが 10 月 27 日から 28 日の夜は CET になるため、1 日については で時刻を計算する必要があります(day*X)+3600。ただし、if ケースを使用したくないので、これを処理するより良い方法があるはずです。

夏時間と冬時間を考慮して将来の日数を計算するにはどうすればよいですか?

私のコード:

    int day = (60*60*24);
    NSDate *today = [NSDate date];
    NSDate *days1 = [[NSDate alloc] initWithTimeIntervalSinceNow:day];
    NSDate *days2 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*2)];
    NSDate *days3 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*3)];
    NSDate *days4 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*4)];
    NSDate *days5 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*5)];
    NSDate *days6 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*6)];
    NSDate *days7 = [[NSDate alloc] initWithTimeIntervalSinceNow:(day*7)];
4

2 に答える 2

3

これを試して:

- (NSDate *)dateByAddingXDaysFromToday:(int)days
{
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    comps.day = days;
    return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:[NSDate date] options:0];
}

次に、次を使用できます。

NSDate *days1 = [self dateByAddingXDaysFromToday:1];
//etc...
于 2012-10-25T00:53:33.150 に答える
0

日付オブジェクトの計算で何を達成しようとしているのかは明確ではありません。現在と同じ時刻の次の 7 日間を参照するオブジェクトを作成するとします。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:1];

NSDate *now = [NSDate date];
NSDate *days1 = [calendar dateByAddingComponents:components toDate:now options:0];
NSDate *days2 = [calendar dateByAddingComponents:components toDate:days1 options:0];
NSDate *days3 = [calendar dateByAddingComponents:components toDate:days2 options:0];
....
于 2012-10-25T01:01:28.563 に答える