我有相当不寻常的要求,但无论如何......
@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
答案 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
格式化所需时区的日期对象。