【问题标题】:Wrong week from date component on IOS5IOS5上日期组件的星期错误
【发布时间】:2012-01-16 04:04:52
【问题描述】:

我的地区格式是美国,我得到的周数与我在也在美国的 Mac OSx 上得到的不同。 我使用的是 iOS 5,并且在这个 sdk 版本之前没有在 iOS 上编程。所以我只是想确保我没有做错什么。使用下面的这段代码,我在今年的最后一周得到了我认为错误的数字 53。我一周的第一天定在星期日。 请指教,谢谢。

 NSCalendar* calendar = [NSCalendar currentCalendar];
    NSDate *date = [NSDate date];


    NSDateComponents *dateComponents = [calendar components:( NSWeekCalendarUnit) fromDate:date ];
    int week = (int)[dateComponents week];


    NSLog(@"%i", week);

作为 [NSDate date] 12 月 8 日,它返回第 50 周,但在 Mac OSX 上我得到第 49 周

【问题讨论】:

  • 什么是selfNSDate 对象?我认为您将需要显示比这更多的代码。我要寻找的是您如何设置您传递给您的dateComponents 对象的NSDate
  • 谢谢,它是NSDate上的一个分类,所以self就是日期,我编辑是为了更容易暴露代码

标签: ios cocoa-touch ios5 nsdate nsdatecomponents


【解决方案1】:

首先,我看到您更改了代码以摆脱“gregorianCalendar”的废话。很好。

当我在测试应用中尝试您的代码时:

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *dateComponents = [calendar components:( NSWeekCalendarUnit) fromDate:[NSDate date]];
int week = (int)[dateComponents week];
[calendar release];
NSLog( @"week is %d", week);
return week;

我已经 49 岁了(这对我来说很有意义)。

如果你已经 53 岁了,那么你输入的日期是错误的。

【讨论】:

  • 我得到 50 的代码,你使用的是什么 sdk 版本?
  • 我在 XCode 4.2.X 和 iOS 5 下使用该代码获得 50... 在 XCode 3.2.6 和 iOS 4.3 SDK 下使用相同代码获得 49。有趣的行为差异,是吗?
  • 我认为更像是一个错误,我提交了它以防万一:错误# 10549802。我想不出上周是 53 的情况。在欧洲,他们使用 ourWeek-1,而不是 +1
【解决方案2】:

您是否检查了语言环境?例如,在某些情况下,美国和欧洲的周数不同。

【讨论】:

    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 2014-10-29
    • 2021-10-12
    • 2018-11-26
    • 1970-01-01
    • 2016-01-04
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多