Ich arbeite an einer Zeit-App, die die Zeit verschiedener Zeitzonen anzeigt. Dazu verwende ich eine Standardzeit haDate
(UTC tz).secondsFromGMT gibt verschiedene Werte auf Gerät und Simulator zurück
Für displayDate
verwende ich Systemzeitzone api. Zeitzone ist America/Santiago
(UTC-3: 00).
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
"haDate" Code -
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];
Das Problem ist, wenn ich diesen Code auf Simulator laufen tz.secondsFromGMT
-10800
aber auf dem Gerät gibt es zurück -14400
, das ist 1 Stunde weniger.
Gerät und Simulator mit der gleichen Zeitzone Asia/Kolkata
(UTC + 5: 30). Ich weiß, America/Santiago
verwendet DST, aber warum gibt es mir verschiedene Sekunden sogar beide (Simulator und Gerät) sind auf der gleichen timeZone.
Was ist falsch und wie kann ich es beheben?
HINWEIS
DST Problem zu beheben ich diesen Code verwenden. Aber es geht immer auf beiden Geräten zum else Teil. (BTW unten Code nicht erforderlich, da tz.secondsFromGMT
immer zurückkehren Sekunden nach DST Anpassungen.)
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
if (tz.isDaylightSavingTime)
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT+tz.daylightSavingTimeOffset];
}
else
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
}
Wenn ich die tz log -
Auf Simulator
tz America/Santiago (GMT-3) offset -10800
auf Device
tz America/Santiago (GMT-4) offset -14400
So verwendet es nicht DST.
ANMERKUNG 2
Dieses Problem tritt nur in iPad 2. Andere Geräte arbeiten gut auftritt.
ANMERKUNG 3
Mein iPad 2 mit iOS 8.4. Beide Zeitzonen (Chile Standard Time - America/Santiago
und Osterinsel Standard Time - Pacific/Easter
) geben mir falsche Sekunden
können Sie überprüfen, ob der Wert von _timezone gleich für alle Setups ist? –
@JoeSmith Ja, es ist. –
Was ist der Wert von _timeZone? Woher kommt das? –