2011-08-17 6 views
6

기기 시간대 추가로 현재 날짜를 가져 오려고했지만 원래 날짜보다 1 시간 늦었습니다. 나는 DaylightSavingTime 문제가 발생했습니다. isDaylightSavingTime = FALSE를 비활성화하는 방법. 여기 현재 NSDate를 시뮬레이터 날짜와 동일하게 만드는 방법 Date? iPhone Sdk

은 .. 내가 사용, 나는 1 시간 차이와 시간을 얻고있다

NSDate *date = [NSDate Date]; 
NSTimeZone *currentTimeZon = [NSTimeZone localTimeZone]; 
if ([currentTimeZon isDaylightSavingTime]) 
{ 
    NSLog(@"East coast is NOT on DT"); 
} 
else 
{ 
    NSLog(@"East coast is on DT"); 

} 
NSTimeInterval timeZoneOffset = [currentTimeZon secondsFromGMTForDate:currentDate]; 
NSTimeInterval gmtTimeInterval = [date timeIntervalSinceReferenceDate] - timeZoneOffset; 
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval]; 
NSLog(@"### Announcement gmtDate = %@",gmtDate); 

코드입니다, 날짜 perfact입니다.

+1

매 순간마다 하나의 NSDate 만 존재합니다 (당신이 어디에 있든 상관 없습니다). 다른 시간대의 날짜를 인쇄하려면 NSDateFormatter를 사용하십시오. –

+0

예,하지만 시간대 변경에 따라 자동 변경되는 일반 기능을 원합니다. isDaylightSavingTime = FALSE 일 때 문제가 있습니다. 그래서 isDaylightSavingTime = TRUE로 설정하고 싶지만 그렇게 할 수는 없다. – Sujal

답변

1

NSCalendar를 사용하면 표준 시간대, 일광 절약 시간 등을 이해합니다. @albertamg에 따르면 NSDate는 UTC (GMT) 기준의 시간 이후이므로 다른 개념이 없습니다.

관련 문제