Xcode 4.2位置模拟器和时区

3

我发现在xcode模拟器中有一个很棒的设置,可以更改当前位置,从而模拟基于位置的测试。

然而,当我尝试使用NSDateFormatter获取日期时,本地日期仍然是太平洋标准时间。我所在的时区是太平洋时间。

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应该使用接收器当前的设置,这应该使用日本东京的时区。

这是预期的吗?

1个回答

0

检查NSDateFormatter-timezone属性 - 我认为这是由设备本身(或您的计算机)控制的,而不是位置。然而,在设置应用程序中有一个设置可以让您按位置设置时间,我不确定是否会改变任何内容,但请尝试激活它。

还有一个通用提示:始终在设备上进行测试 - 我认为“模拟位置”设置也适用于手机。

编辑:刚看到一个可能相关的答案,请在设置新位置后调用[NSTimeZone resetTimeZone];。那应该会触发重置并希望显示正确的时区。参考:https://dev59.com/NW025IYBdhLWcg3weF6S#5987409


  1. 我在设备上尝试了一下,但模拟位置选项不可用。因此我在模拟器上尝试;
  2. 我知道 dateFormatter 上的 timeZone 设置。我的问题只是模拟位置应该也应该模拟时间。我不确定这是否是设计上的问题(即不模拟时区部分),还是我做错了什么。
- mbh
请查看编辑后的答案,虽然我不确定是否应该这样,但理论上位置的更改确实应该触发时区更新。 - Emil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接