我注意到在运行时xcode模拟器中有一个漂亮的设置,我可以更改当前位置,从而模拟基于位置的测试
但是,当我尝试使用NSDateFormatter获取日期时,本地日期仍在PST中。我在太平洋时区
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; // Jan 1, 2010
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; // 1:43 PM
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];
[usLocale release];
NSDate *testDate = [NSDate date];
NSLog(@"Local date: %@", [dateFormatter stringFromDate:testDate]);
根据文档,stringFromDate应使用接收器当前设置,该设置应使用日本东京的时区。
这是预期的吗?
答案 0 :(得分:0)
选择- timezone
的{{1}} - 属性 - 我认为这是由设备本身(或本例中的计算机)控制的,而不是位置。设置应用程序中有一个设置但是可以让你按位置设置时间,我不确定这是否会改变任何内容,但尝试激活它。
一般提示:总是在设备上测试它 - 我认为“模拟位置”设置也适用于手机。
修改:刚看到一个可能相关的答案,请在设置新位置后尝试拨打NSDateFormatter
。这应该触发重置,并希望显示正确的时区。参考:https://stackoverflow.com/a/5987409/267892