我正在研究顯示不同時區的時間的時間應用程序。爲此,我使用標準時間haDate
(UTC tz)。secondsFromGMT在設備和模擬器上返回不同的值
對於displayDate
我使用的是系統時區api。時區爲America/Santiago
(UTC-3:00)。
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
「haDate」 代碼 -
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
formatter.timeZone=[NSTimeZone timeZoneWithName:@"UTC"];
NSString *utcTimeCurrent=[dict objectForKey:@"utctime"];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
_haDate=[formatter dateFromString:utcTimeCurrent];
的問題是當我運行上模擬器tz.secondsFromGMT
返回-10800
這個代碼,但在設備上,它返回-14400
,其爲1小時以下。
設備和模擬器使用相同的時間區域Asia/Kolkata
(UTC + 5:30)。我知道America/Santiago
使用DST,但它爲什麼給我不同的秒數,即使兩個(模擬器和設備)都在同一時間區域。
什麼是錯,我該如何解決?
注
要解決DST問題我使用這個代碼。但它總是轉到兩個設備上的其他部分。 (BTW下面是不需要的代碼,因爲tz.secondsFromGMT
後始終DST調整返回秒。)
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
if (tz.isDaylightSavingTime)
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT+tz.daylightSavingTimeOffset];
}
else
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
}
當我登錄的TZ -
在模擬器
tz America/Santiago (GMT-3) offset -10800
在設備
tz America/Santiago (GMT-4) offset -14400
所以它沒有使用DST。
注2:
此問題僅出現在iPad 2的其他設備工作正常。
注3
我的ipad 2使用的是iOS 8.4。兩個時區(智利標準時間 - America/Santiago
和復活節島標準時間 - Pacific/Easter
)都給我錯誤的秒數
你可以檢查_timezone的值是否同樣爲你設置? –
@JoeSmith是的,是的。 –
_timeZone的價值是什麼?它從何而來? –