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


当前回答

我的构建服务器是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

其他回答

目前唯一可行的解决方案。XCode提供了为特定应用程序设置时区的选项。

在XCode中,单击应用程序,编辑方案->运行配置->参数选项卡->添加环境变量

创建一个变量,名称:TZ,值:CST(任何其他标准格式。XCode没有明确提到允许的值。但你也可以用America/Chicago)

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

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

我的构建服务器是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

你可以在Xcode Scheme中设置TZ环境变量来为该应用程序设置时区。

您可以使用UTC、PST、EST以及基于位置的时区名称,如America/Los_Angeles。虽然没有详细的文档,但我认为任何时区名称都可以使用。

它没有很好的文档,但来源是苹果开发者论坛上的开发者支持代表。