我刚刚在我的一个应用程序中找到了一个;问题是我正在使用initWithTimeIntervalSinceNow
计算菜单中的天数并添加计算(day*X)
(X
表示相关日期。)
然而,在CEST时区的10月27日到28日之间的夜晚将成为CET,这意味着一天的时间应该由(day*X)+3600
计算。但是,我不想使用if case并相信应该有更好的方法来处理这个问题。
如何在考虑夏季/冬季时间的情况下计算未来的日子?
我的代码:
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)];
答案 0 :(得分: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...
答案 1 :(得分:0)
目前尚不清楚您计算日期对象的目的是什么。我假设您要创建引用接下来七天的对象,与现在相同。
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];
....