2010-07-01 46 views
2

如何確定東海岸當前是否正在使用EST或EDT使用iPhone SDK?確定東海岸當前是通過iPhone SDK使用EST還是EDT

我知道NSTimeZone類,我嘗試了以下,但它沒有工作,結果是「東海岸不在DT」,它目前是。這使我相信,isDayLightSavingTime只是檢查其是否被傳遞的ST或DT值,而不是確定是否EST目前應該是EDT

NSTimeZone *easternTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"EST"]; 
if ([easternTimeZone isDaylightSavingTime]) { 
    NSLog(@"East coast is NOT on DT"); 
} else { 
    NSLog(@"East coast is on DT");  
} 

UPDATE:

的最終目標是,我需要能夠計算東部時區的當前正確時間,並考慮他們目前是否正在觀察夏令時。

更新2:

有趣的結果,當我改變

NSTimeZone *easternTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"EST"];

NSTimeZone *easternTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"EDT"];

仍然會返回 「東海岸是不是在DT」

+0

'[easternTimeZone daylightSavingTimeOffset]'返回什麼? – kiamlaluno 2010-07-01 00:13:29

+0

@Brent一般來說,API中的任何位置都定義了DST時間規則嗎? – 2010-07-01 00:21:09

+0

@kiamlaluno 3600.0 – 2010-07-01 00:23:33

回答

2

,你需要使用-[NSTimeZone timeZoneWithName:],你確定這是不是隻是在你的記錄中的錯誤?

您正在檢查[easternTimeZone isDaylightSavingTime],如果這是真的,那麼您正在記錄@"East coast is NOT on DT"。看起來邏輯是正確的,因爲這是你得到的結果,你只是錯誤地記錄它...

+0

是的,謝謝莫,簡單忽略 – 2010-07-01 01:28:47

9

改爲使用US/Eastern

NSTimeZone *easternTimeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"]; 
if ([easternTimeZone isDaylightSavingTime]) { 
    NSLog(@"East coast is NOT on DT"); 
} else { 
    NSLog(@"East coast is on DT");  
} 

注,而不是-[NSTimeZone timeZoneWithAbbreviation:]

+0

如何獲得美國/東部名稱?如果我想檢查其他時區,它是什麼字符串?請給資源鏈接。 – 2016-09-12 07:28:08

相關問題