如何在 Objective-C 中获取当前周数?

发布于 2024-12-11 19:27:31 字数 682 浏览 0 评论 0 原文

我开发了一个需要获取当前星期的应用程序。我尝试了这个:

- (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。这实际上是一个错误的结果。请给我提出任何想法。 提前致谢。

I develop an app that needs to get the current week. I tried this:

- (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];
}

but it shows me 52. Which is actually a wrong result. Please, suggest me any ideas.
Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋心╮凉 2024-12-18 19:27:31

周日期取决于所使用的编号标准。例如,ISO-8601 标准将一年中的第 1 周定义为“具有今年的第一个星期四就在其中”。

2011 年 1 月第一天是星期六,这意味着接下来的一周是 2011 年的第 1 周,从而使 2010 年 12 月 27 日至 2011 年 1 月 2 日这一周成为 2010 年的第 52 周。

此外,对于周的开始或结束时间以及周的方式,存在多个不兼容的标准一年内已数完。这使得周数成为指定日期范围的一种令人困惑的方式,也是避免使用它们的最佳解决方案。

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

The week date depends on which numbering standard is in use. For instance, the ISO-8601 standard defines week 1 of a year as "the week with the year's first Thursday in it".

The first of January 2011 was a Saturday, which means the following week was week 1 of 2011, making the week 27.12.2010–2.1.2011 week 52 of 2010.

Also, there's several incompatible standards for when weeks start or end and how weeks in a year are numbered. This makes week numbers a confusing way to specify a date range and the best solution to avoid using them.

From the documentation to NSCalendar, it seems you could also use setMinimumDaysInFirstWeek: to adjust the way it numbers weeks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文