2

我开发了一个需要获得当前周的应用程序。我试过这个:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *dateString = @"1-1-2011";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:dateString];
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *comp = [gregorian components:NSWeekCalendarUnit fromDate:dateFromString];
    NSLog(@"%d", comp.week);

    [dateFormatter release];
}

但它向我显示了 52。这实际上是一个错误的结果。请给我建议任何想法。提前致谢。

4

1 回答 1

5

星期日期取决于使用的编号标准。例如,ISO-8601 标准将一年中的第 1周定义为“包含一年中第一个星期四的那一周”。

2011 年 1 月的第一天是星期六,这意味着接下来的一周是 2011 年的第 1 周,即 27.12.2010–2.1.2011 的第 2010 周。

此外,对于周的开始或结束时间以及一年中的周数如何编号,还有几个不兼容的标准。这使得周数成为指定日期范围和避免使用它们的最佳解决方案的一种令人困惑的方式。

从文档到 NSCalendar,您似乎也可以使用 setMinimumDaysInFirstWeek:它来调整它对周数的方式。

于 2011-10-25T13:41:05.267 回答