【问题标题】:Getting wrong week number in iOS在 iOS 中获取错误的周数
【发布时间】:2012-07-25 11:34:37
【问题描述】:

我正在尝试在 iPhone 中获取周数。我正在使用这段代码

NSNumber* getWeek() {
    NSDate *currDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"w.ee"];
    NSString *dateString = [dateFormatter stringFromDate:currDate];
    NSNumberFormatter *weekNumber = [[NSNumberFormatter alloc] init];
    [weekNumber setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *week = [weekNumber numberFromString:dateString];
    [weekNumber release];
    return week;
 }

但是,我有不同的结果,在模拟器上还可以,但是当我在 iPhone 上运行时,这让我得到“0” IOS 5.0.1

有什么帮助吗?

【问题讨论】:

  • 这段代码在我的真实设备上运行良好。我认为您真正的问题不在此方法之内...
  • 你检查过你的 iPhone 上设置的日期吗?

标签: objective-c ios5 nsdate nsdateformatter nscalendar


【解决方案1】:

使用字符串表示周数并不是获取此类信息的最佳方式。 NSCalendarNSDateComponents 专为此类计算而设计:

NSDate *currDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSWeekOfYearCalendarUnit|NSWeekdayCalendarUnit fromDate:currDate];
NSLog(@"%d %d", components.weekOfYear, components.weekday);

您可以在日历调用(第 3 行)中指定组件列表,如示例中所示,注意只有指定的组件才能保证填充到 NSDateComponents 对象中。

【讨论】:

  • 如果该应用程序将在全球范围内使用,请确保您也处理可能的时区问题!
猜你喜欢
  • 2013-07-09
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2017-03-09
  • 1970-01-01
  • 2020-08-02
相关资源
最近更新 更多