如何在iPhone模拟器中更改时间和时区?


当前回答

在更改系统日期时间首选项后,我不得不选择硬件>重置所有内容和设置。 只有在10.3版(SimulatorApp-880.5 CoreSimulator-681.5.4)中,我才这样做。

其他回答

这是一个老帖子,但它最接近我的问题。我需要模拟欧洲的时区,这个方法适合我。转到“时区”,而不是“日期和时间”。取消选中“使用当前位置自动设置时区”框,并滑动垂直矩形条(上面有蓝点)来模拟系统时间。

为了截屏,苹果最终通过simctl工具实现了在iOS模拟器的状态栏上覆盖时间的功能(从Xcode 11开始):

xcrun simctl status_bar "iPhone Xs" override --time "21:08"

在更改系统日期时间首选项后重新启动模拟器,您将看到反映的更改。这对我很管用。

我的构建服务器是UTC,我的一些单元测试需要时区是PST。使用NSTimeZone上的一个类别,你可以覆盖苹果的实现来使用你的代码。也适用于swift项目。

//NSTimeZone+DefaultTimeZone.h
#import <Foundation/Foundation.h>

@interface NSTimeZone (DefaultTimeZone)

+(NSTimeZone *)defaultTimeZone;

@end

//NSTimeZone+DefaultTimeZone.m
#import "NSTimeZone+DefaultTimeZone.h"

@implementation NSTimeZone (DefaultTimeZone)

+(NSTimeZone *)defaultTimeZone
{
    return [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];
}

@end

我猜它使用您的系统时区,所以在系统首选项中更改TZ可能会奏效