设置UIDateTime Picker时区

时间:2014-08-04 20:52:35

标签: ios objective-c

我有相当不寻常的要求,但无论如何......

@property (weak, nonatomic) IBOutlet UIDatePicker *dateDatePicker;

当我读取dateDatePicker.date时,它会将NSDate设置返回到当前系统的时区。但我希望它处于不同的特定时区。

所以,现在假装在中部时间下午3:50。 dateDatePicker.date返回CST下午3:50

我希望有这样的东西:

[dateDatePicker setTimeZone:@"EST"]
NSDate *ESTDate = dateDatePicker.date;

...然后我想调试器显示"下午2点50分CST" - 因为美国东部时间下午3点50分是2:50CST

2 个答案:

答案 0 :(得分:0)

这可能比您想象的更简单。如果您的日期是CST下午3:50,并且您希望它是CST下午2:50,则只需减去一小时:

date = [date dateByAddingTimeInterval:-3600];

当然,本地时区可能并不总是CST,因此您可以获得两个时区之间的差异并使用它而不是硬编码-3600:

NSString *targetTimeZoneName = @"US/Eastern";
NSInteger localOffset = [[NSTimeZone localTimeZone] secondsFromGMTForDate:date];
NSInteger targetOffset = [[NSTimeZone timeZoneWithName:targetTimeZoneName] secondsFromGMTForDate:date];
NSInteger timeZoneDelta = localOffset - targetOffset;

date = [date dateByAddingTimeInterval:timeZoneDelta];

答案 1 :(得分:0)

UIDatePicker的{​​{1}}属性不是字符串,因为您正在使用它。你必须传递一个timeZone对象。

此外,NSTimeZone没有时区。它只是历史上的一个时刻,它的字符串表示取决于时区。使用NSDate格式化所需时区的日期对象。