如何在iPhone模拟器中更改时间和时区?
当前回答
你可以在Xcode Scheme中设置TZ环境变量来为该应用程序设置时区。
您可以使用UTC、PST、EST以及基于位置的时区名称,如America/Los_Angeles。虽然没有详细的文档,但我认为任何时区名称都可以使用。
它没有很好的文档,但来源是苹果开发者论坛上的开发者支持代表。
其他回答
在更改系统日期时间首选项后,我不得不选择硬件>重置所有内容和设置。 只有在10.3版(SimulatorApp-880.5 CoreSimulator-681.5.4)中,我才这样做。
为了截屏,苹果最终通过simctl工具实现了在iOS模拟器的状态栏上覆盖时间的功能(从Xcode 11开始):
xcrun simctl status_bar "iPhone Xs" override --time "21:08"
目前唯一可行的解决方案。XCode提供了为特定应用程序设置时区的选项。
在XCode中,单击应用程序,编辑方案->运行配置->参数选项卡->添加环境变量
创建一个变量,名称:TZ,值:CST(任何其他标准格式。XCode没有明确提到允许的值。但你也可以用America/Chicago)
以下是至少在iOS 13和Xcode 11中可用的解决方案。(未对以前的版本进行测试) [编辑]这只会改变评论中的状态栏!
默认情况下,iOS模拟器显示Mac上的任何时间,但是,你可以使用Xcode的命令行在终端中使用以下命令来覆盖它:
xcrun simctl status_bar "iPhone 11 Pro Max" override --time '9:41'
将模拟器名称替换为要更改的设备。
对于状态栏,你有这个覆盖:
You may specify any combination of these flags (at least one is required):
--time <string>
Set the date or time to a fixed value.
If the string is a valid ISO date string it will also set the date on relevant devices.
--dataNetwork <dataNetworkType>
If specified must be one of 'wifi', '3g', '4g', 'lte', 'lte-a', or 'lte+'.
--wifiMode <mode>
If specified must be one of 'searching', 'failed', or 'active'.
--wifiBars <int>
If specified must be 0-3.
--cellularMode <mode>
If specified must be one of 'notSupported', 'searching', 'failed', or 'active'.
--cellularBars <int>
If specified must be 0-4.
--batteryState <state>
If specified must be one of 'charging', 'charged', or 'discharging'.
--batteryLevel <int>
If specified must be 0-100.
时间可以是任何字符串。但如果你想让设备显示日期,你需要使用ISO格式。 例如,有效的ISO日期字符串应该是'2007-01-09 t10 . 41:00+01:00'
否则,您可以使用时间参数作为字符串,它将显示您传递的任何内容。
感谢Paul Hudson的原创文章,这里是链接!
我猜它使用您的系统时区,所以在系统首选项中更改TZ可能会奏效
推荐文章
- 创建配置文件失败
- 如何在Django中设置时区
- Java SimpleDateFormat("yyyy-MM-dd' t ' hh:mm:ss' z '")给出的时区为IST
- 为什么ARC仍然需要@autoreleasepool ?
- 在成功提交我的应用程序后,“太多符号文件”
- 首先添加一个UIView,甚至是导航栏
- 复制并重命名Xcode项目和相关文件夹
- 我如何改变UIButton标题颜色?
- iOS -构建失败,CocoaPods无法找到头文件
- Xcode 4挂在“附加到(应用程序名称)”
- 为什么单元测试中的代码不能找到包资源?
- 以编程方式创建segue
- 在Objective-C中@synchronized如何锁定/解锁?
- Xcode 10的对象库去哪了?
- Xcode 10的UI元素在哪里?