2017-03-14 8 views
0

현재 GMT-0700 (미국/태평양)을한다 제공하지만 방법이 문제를 해결하는 NSTimeZoneNSTimeZone isDaylightSavingTime는 일 라이트 절약</p> <p>이미 잘못된 값을

에서 "NO"
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT]; //Getting timezone as GMT-0700 
BOOL isDaylightSavingTime = [timeZone isDaylightSavingTime]; //getting boolean value as NO 

무엇입니까 ?

요건 : 나는) 내 수신기가 dayLightSavingTime 사용하고 알고 싶어하거나 그렇소 만 수신기 value.I 서로 다른 시간대를 (지원해야 오프셋 얻을 것이다 ..이

답변

1

이 작업을 수행하는 가장 좋은 방법 무엇입니까 잘못된 값이 아닙니다. 당신은 표준 시간대 GMT-0700을 얻지 만 이것은 태평양 표준 시간대가 아닙니다. 태평양 시간대를 만들려면 다음이 필요합니다

+ (instancetype) timeZoneForSecondsFromGMT :

timeZone = [NSTimeZone timeZoneWithName:@"PST"]; 

이 사과 문서에서 간단한 설명입니다 (NSInteger) 초;

설명 지정된 시간 (초) 그리니치 평균 시간에서 오프셋 된 표준 시간대 개체를 반환합니다. 새 표준 시간대의 이름은 GMT +/- 오프셋 (시간 및 분)입니다. 이 메서드로 만든 표준 시간대는 일광 절약제가 적용되지 않으며이며 오프셋은 상수 no 날짜입니다.

+1

PST? 나는 그 이름을 가진 시간대에 대해 들어 본 적이 없다. 나는 미국/태평양 소식을 들었다. –

+0

https://www.timeanddate.com/time/zones/pst – Sergey

+0

또한이 문자열을 사용하여 시간대를 만들 수 있습니다. – Sergey

2

timeZoneForSecondsFromGMT은 충분히 구체적이지 않습니다.

가장 정확한 방법은 (전체) 지역의 이름으로 시간대를 만드는 것입니다 : timeZoneWithName을 언급

NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"]; 
+0

"isDayLight".why "PST"를 사용해야하는지 확인하는 경우 매우 기본적인 질문 –

+0

답변을 업데이트했습니다. – vadian

+0

정말로, 애플은'timeZoneWithAbbreviation'을 비추어 야합니다. 동일한 약어가있는 다른 시간대가 있습니다 (예 : "필리핀 표준시". 또한 일광 절약 시간제를 사용하는 변형은 때때로 "PDT"로 약어로 표시됩니다. – Sulthan

0

다른 답변은 정확하지만, 내가 언급하고있다 생각하지 않는다 또 하나 개의 세부 사항이있다. timeZoneForSecondsFromGMT이 작동하지 않는 이유는 GMT가 일광 절약 시간 (또는 일부 국가에서는 더 현명하게 불리는 여름 시간)을 갖지 않기 때문입니다. GMT는 앞으로 또는 뒤로 뛰지 않습니다. 항상 초 당 1 초씩 진행합니다. GMT에서 고정 된 시간 (초)을 요구하기 때문에 결과에도 GMT가 없습니다. 일광 절약 시간제를 준수하는 표준 시간대를 제공하면 GMT에서 초가 초당 2 회 변경됩니다. 그러나 고정 된 시간 (초)을 요구 한 이후에는 결과가 나타나지 않고 일광 절약 시간제가 적용되었다고보고하지 않습니다.