programing

iPhone 시뮬레이터에서 시간과 시간대를 변경하는 방법은?

minxs 2023. 4. 16. 15:50
반응형

iPhone 시뮬레이터에서 시간과 시간대를 변경하는 방법은?

iPhone 시뮬레이터에서 시간과 시간대를 변경하려면 어떻게 해야 하나요?

시스템 표준 시간대를 사용하는 것 같기 때문에 시스템 기본 설정에서 TZ를 변경하는 것이 효과적일 수 있습니다.

설명을 위한 스크린샷

를 설정할 수 있습니다.TZXcode Scheme에서 환경변수를 지정하여 해당 앱의 표준 시간대를 설정합니다.

스킴 관리

사용할 수 있습니다.UTC,PST,EST, 및 플레이스 베이스의 타임 존명(예:America/Los_Angeles잘 문서화되어 있지는 않지만, 시간대 이름은 어떤 이든 상관없습니다.

문서화는 잘 되어 있지 않지만, 그 출처는 개발자 포럼의 Apple Developer Support 담당자입니다.

시스템 날짜 시간 기본 설정을 변경한 후 시뮬레이터를 재시작하면 변경 내용이 반영됩니다.그것은 나에게 효과가 있었다.

스크린샷을 찍기 위해, 애플은 마침내 iOS 시뮬레이터의 상태 표시줄에서 시간을 오버라이드할 수 있게 되었습니다(Xcode 11 이후).

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

적어도 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.

time에는 임의의 문자열을 지정할 수 있습니다.그러나 단말기에 날짜를 표시하려면 ISO 형식을 사용해야 합니다.예를 들어 유효한 ISO 날짜 문자열은 '2007-01-09T10:41:00+01:00'입니다.

그렇지 않으면 time 파라미터를 문자열로 사용할 수 있습니다.이 파라미터에 전달된 내용이 표시됩니다.

Paul Hudson의 원래 게시물에 감사드리며, 여기 링크가 있습니다!

이것은 오래된 실이지만 내 질문에 가장 가깝다.유럽 표준 시간대를 시뮬레이션해야 하는데, 이 방법이 효과가 있어요.'날짜' 대신 '시간대' 탭으로 이동시간 탭.'현재 위치를 사용하여 자동으로 표준 시간대 설정' 상자의 선택을 취소하고 파란색 점이 있는 수직 직사각형 막대를 슬라이드하여 시스템 시간을 시뮬레이션합니다.

여기에 이미지 설명 입력

시간대를 변경할 때 가장 쉬운 방법은 메뉴바의 시계를 클릭하는 것이었습니다.그런 다음 "Open Date & Time Preferences"를 선택한 후 [Time Zone]탭을 선택합니다.

또는 [시스템 설정(System Preferences)]-> [날짜와 시각(Date and Time)]를 선택하여 [타임존(Time Zone)]탭을 선택합니다.

OSX에 대해 잘 모르는 사람을 위한 포인터입니다.

시간 변경 문제에 대한 자동 해결 방법 https://stackoverflow.com/a/34793193/829338을 제안했습니다.나는 그것이 그에 따라 시간대를 변경하는 데도 효과가 있을 것이라고 생각한다.


앱을 자동으로 테스트해야 했기 때문에 시스템 시간을 변경해야 했습니다.톰이 제안했던 건 해피 해키 스위즐링이었어요

를 들면, 저는 단지 으로만 바꿉니다.[NSDate date] 아니다[NSDate dateWithTimeIntervalSince1970:].

먼저 새 [NSDate 날짜]로 사용할 클래스 메서드를 만들어야 합니다.단순히 시간을 일정 시간 차이만큼 이동시키기 위해 구현했습니다.

int timeDifference = 60*60*24; //shift by one day
NSDate* (* original)(Class,SEL) = nil;

+(NSDate*)date{
    NSDate* date = original([NSDate class], @selector(date));
    return [date dateByAddingTimeInterval:timeDifference];
}

지금까지는 꽤 쉬워요.츠미야이 메서드는 클래스와 Exchange 구현 모두에서 얻을 수 있습니다(AppDelegate에서는 작동했지만 UITests 클래스에서는 작동하지 않았습니다). 위해서는 Import를 해야 .objc/runtime.h.

Method originalMethod = class_getClassMethod([NSDate class], @selector(date));
Method newMethod = class_getClassMethod([self class], @selector(date));

//save the implementation of NSDate to use it later
original  = (NSDate* (*)(Class,SEL)) [NSDate methodForSelector:@selector(date)];

//happy swapping
method_exchangeImplementations(originalMethod, newMethod);

빌드 서버는 UTC이며 일부 유닛 테스트에서는 시간대가 PST여야 했습니다.NSTimeZone의 카테고리를 사용하면 Apple의 구현을 덮어쓰고 코드를 사용할 수 있습니다.신속한 프로젝트에도 대응합니다.

//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를 합니다.Edit Scheme -> Run configuration -> Arguments Tab -> Add Environment Variables

이름: 수를 name name name name name name name name name.TZ , ::CST( ( ( ( ( ( ( )XCode는 XCode를 사용합니다.지시시 / 시시시시시시시시)

참조용 이미지

시간 한 후, 는 '일시 설정'을 선택해야 .HardwareReset All Content And Settings.
3 10 . 3 ( Simulator App - 880 . 5 Core Simulator - 681 . 5 . 4 ) 。

언급URL : https://stackoverflow.com/questions/1699671/how-to-change-time-and-timezone-in-iphone-simulator

반응형