2

所以我试着得到这周的日期范围。

当我得到当前日期组件(只有年份和日期)时,这些是值:

在此处输入图像描述

我注意到在一周前写了“过时的”。确实尝试搜索苹果文档,但没有发现任何相关信息。

然后我尝试使用当前日历(或公历,相同的值)获取 NSDate,但我得到的值是:

在此处输入图像描述

所以周被忽略了。所以我在我的组件中增加了几个月零一周的时间,并且有这样的组件:

在此处输入图像描述

然后我试图摆脱我的约会,这就是我得到的:

在此处输入图像描述

现在显然周组件在这里被忽略了。为什么呢?是否已弃用?或者它是一些错误?

4

3 回答 3

2

所以我终于找到了解决方案。

如果您只是设置工作日,似乎一切都解决了(开始工作):

[startDate setWeekday:1];

然后正确返回带有星期的日期。

不知道在没有设置工作日的情况下忽略周组件是否仍然是一个错误。

于 2013-06-24T13:29:30.000 回答
1

要计算一周的开始结束日期, 的rangeOfUnit:startDate:interval:forDate:方法NSCalendar非常有用:

NSDate *now = [NSDate date];

NSDate *startOfWeek;
NSTimeInterval length;
[[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit
                                startDate:&startOfWeek
                                 interval:&length
                                  forDate:now];
NSDate *endOfWeek = [startOfWeek dateByAddingTimeInterval:length];
NSLog(@"%@", startOfWeek);
NSLog(@"%@", endOfWeek);

要计算一周前的同一日期,请使用dateByAddingComponents

NSDate *now = [NSDate date];
NSDateComponents *comp = [[NSDateComponents alloc] init];
[comp setWeek:-1]; // One week back in time
NSDate *date = [[NSCalendar currentCalendar] dateByAddingComponents:comp toDate:now options:0];
NSLog(@"%@", now);
NSLog(@"%@", date);
于 2013-05-21T17:10:55.267 回答
0

即使我对我的问题没有答案,我也会发布我使用的这个问题的解决方案。

所以我花了几周时间将它们乘以 7。这给了我当前的周末结束日期。我知道这不好,因为几周可以设置不同的日期等。但是对于我最默认的问题(公历日历,每周 7 天),这个解决方案是现有日期时间计算器中的快速解决方法。

[components setDay:components.week * 7 - 7];                                //Start of week
        startDate = [[NSCalendar currentCalendar] dateFromComponents:components];
        [components setDay:components.day + 7];                                     //End of week
        endDate = [[NSCalendar currentCalendar] dateFromComponents:components];
        [components setDay:0];                                                      //I am using this not just here so i am setting back my changes
于 2013-05-21T15:46:55.203 回答