【发布时间】:2014-04-07 21:28:49
【问题描述】:
我正在尝试从一天和一周的帖子到今天获得NSDate。
例如week = 2 和 day = 4,这将是从现在开始的 two 周后的 thursday(假设一周从星期一开始)。
我使用NSCalendar 和NSDateComponents 尝试了很多不同的东西,但都没有成功。
也搜索了一下,但没有找到关于我的问题的任何其他主题。
我尝试的最后一件事是:
- (NSDate *)getDateForIndexPath:(NSIndexPath *)indexPath
{
int week = ((indexPath.row / 7) % 5);
int day = (indexPath.row % 7);
NSDate *referenceDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"]];
[calendar setTimeZone:[NSTimeZone localTimeZone]];
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit | NSWeekCalendarUnit |NSWeekdayCalendarUnit) fromDate:referenceDate];
[dateComponents setWeekday:day];
[dateComponents setWeek:dateComponents.week+(week-1)];
[dateComponents setWeek:dateComponents.week];
NSDate *followingDate = [calendar dateFromComponents:dateComponents];
NSLog(@"Week: %d - Day: %d", week, day);
NSLog(@"followingDate: %@", followingDate);
return followingDate;
}
这一遍又一遍地给了我相同的日期,除了它将第 0 天视为星期日的事实:
2014-04-08 00:02:33.706 TVSports[79878:60b] Week: 1 - Day: 0
2014-04-08 00:02:33.707 TVSports[79878:60b] followingDate: 2014-04-11 22:00:00 +0000
2014-04-08 00:02:33.708 TVSports[79878:60b] Week: 1 - Day: 1
2014-04-08 00:02:33.708 TVSports[79878:60b] followingDate: 2014-04-05 22:00:00 +0000
2014-04-08 00:02:33.709 TVSports[79878:60b] Week: 1 - Day: 2
2014-04-08 00:02:33.709 TVSports[79878:60b] followingDate: 2014-04-06 22:00:00 +0000
2014-04-08 00:02:33.710 TVSports[79878:60b] Week: 1 - Day: 3
2014-04-08 00:02:33.710 TVSports[79878:60b] followingDate: 2014-04-07 22:00:00 +0000
【问题讨论】:
-
NSDateComponents是要走的路,向我们展示您对他们的尝试。 -
我尝试了很多不同的东西。我可以试试看是否可以撤消上一次尝试的操作。
-
@Kevin 用我尝试过的最新代码更新了代码。现在似乎显示日期,但是日期不正确(除了时区问题)。
标签: objective-c nscalendar nsdatecomponents