iphone - xcode 4.2 位置模拟器和时区

标签 iphone xcode nsdate nsdateformatter

我在运行时注意到 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 应使用接收器当前设置,该设置应使用日本东京的时区。

这是预期的吗?

最佳答案

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

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

编辑:刚刚看到一个可能相关的答案,请在设置新位置后尝试调用 [NSTimeZone resetTimeZone]; 。这应该会触发重置并希望显示正确的时区。引用:https://stackoverflow.com/a/5987409/267892

关于iphone - xcode 4.2 位置模拟器和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957642/

相关文章:

iphone - 基于导航的应用程序中 UITabBar 的替代品

ios - Invalid Bundle Info.plist 为 CFBundleExecutable 键指定了一个不存在的文件

iphone - 整合 FlurryAds

swift - 使 UIButton 在 Interface Builder 中可访问

arrays - 快速排序 NSDates 数组

ios - Swift 3 : Find out, 如果日期已更改 - 怎么办?

objective-c - NSSpeechSynthesizer 更改语言

ios - Swift,XCode 6,将新部分添加到现有的 uitableview

ios - SWIFT:如何向 NSDate 对象添加小时数

cocoa - iOS 一年中的某一天