时区未在NSCalendar上设置

时间:2014-11-07 10:06:07

标签: ios nscalendar nstimezone

当我实例化一个简单的NSCalendar并尝试设置时区时,它似乎没有任何效果。我在这里错过了什么吗?

  NSCalendar *cal = [[NSCalendar alloc] init];
  NSTimeZone *tz = [NSTimeZone timeZoneWithName:@"America/Denver"];
  NSLog(@"tz:%@", tz);
  //outputs: tz:America/Denver (MST) offset -25200

  [cal setTimeZone: tz];
  NSLog(@"[cal timeZone]:%@", [cal timeZone]);
  //outputs: [cal timeZone]:(null)

  cal.timeZone = tz;
  NSLog(@"cal.timeZone:%@", cal.timeZone);
  //outputs: cal.timeZone:(null)

1 个答案:

答案 0 :(得分:0)

我明白了。我猜你不能在用[[NSCalendar alloc] init]创建的NSCalendar对象上设置时区。它应该是[NSCalendar currentCalendar]。除了编写价值之外,setter必须做一些奇特的事情,如果它不是预先配置的日历之一,它就不会起作用。