0

我刚刚在我的一个应用程序中找到了一个;问题是我正在计算菜单中的天数initWithTimeIntervalSinceNow并添加计算(day*X)X意思是有问题的日子)。

但是,CEST 时区 10 月 27 日至 28 日之间的夜晚将变为 CET,因此这意味着一天的时间应由(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 回答