Ios 设置UIDateTime选择器时区
我有一个很不寻常的要求,但无论如何Ios 设置UIDateTime选择器时区,ios,objective-c,Ios,Objective C,我有一个很不寻常的要求,但无论如何 @property (weak, nonatomic) IBOutlet UIDatePicker *dateDatePicker; 当我读取dateDatePicker.date时,它将NSDate集返回到当前系统的时区。但我希望它在不同的特定时区 假设现在是中央时间下午3:50。 dateDatePicker.date返回CST下午3:50 我想要这样的东西: [dateDatePicker setTimeZone:@"EST"] NSDate *EST
@property (weak, nonatomic) IBOutlet UIDatePicker *dateDatePicker;
当我读取dateDatePicker.date时,它将NSDate集返回到当前系统的时区。但我希望它在不同的特定时区
假设现在是中央时间下午3:50。
dateDatePicker.date返回CST下午3:50
我想要这样的东西:
[dateDatePicker setTimeZone:@"EST"]
NSDate *ESTDate = dateDatePicker.date;
。。。然后我希望调试器显示“2:50pm CST”-因为东部时间的3:50pm是2:50CST这可能比你想象的要简单。如果您的日期是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];
UIDatePicker
的时区
属性在使用时不是字符串。您必须向它传递一个NSTimeZone
对象
而且,
NSDate
s没有时区。这只是历史上的一个瞬间,它的字符串表示取决于时区。使用NSDateFormatter
为所需时区设置日期对象的格式。在我看来,日期选择器应该是一个强有力的参考。您可能不会遇到任何问题,因为它由它的superview保留,但它也应该由所有者保留,我猜,所有者是您的视图控制器,以防您临时将其从视图层次结构中删除。