Sto lavorando a un'app di tempo che visualizza l'ora di diversi fusi orari. Per questo sto usando un orario standard haDate
(UTC tz).secondsFromGMT restituisce valori diversi su dispositivo e simulatore
Per displayDate
sto usando api di fuso orario di sistema. Il fuso orario è America/Santiago
(UTC-3: 00).
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
codice "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];
Il problema è quando ho eseguito questo codice sul simulatore tz.secondsFromGMT
torna -10800
ma il dispositivo che restituisce -14400
, che è di 1 ora in meno.
Dispositivo e simulatore che utilizza lo stesso timezone Asia/Kolkata
(UTC + 5: 30). So che America/Santiago
utilizza l'ora legale, ma perché mi sta dando diversi secondi anche se entrambi (simulatore e dispositivo) sono sullo stesso fuso orario.
Cosa c'è che non va e come posso risolverlo?
NOTA
Per fissare problema DST Sto usando questo codice. Ma va sempre nella parte opposta su entrambi i dispositivi. (BTW sotto codice non è necessario perché tz.secondsFromGMT
ritornano sempre secondi dopo gli aggiustamenti DST.)
NSTimeZone *tz=[NSTimeZone timeZoneWithName:_timeZone];
if (tz.isDaylightSavingTime)
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT+tz.daylightSavingTimeOffset];
}
else
{
_displayDate=[_haDate dateByAddingTimeInterval:tz.secondsFromGMT];
}
quando accedo al tz -
sul simulatore
tz America/Santiago (GMT-3) offset -10800
Sul dispositivo
tz America/Santiago (GMT-4) offset -14400
Quindi non utilizza l'ora legale.
NOTA 2
Questo problema si verifica solo in iPad 2. Altri dispositivi di funzionare bene.
NOTA 3
il mio iPad 2 utilizzando iOS 8.4. Entrambi i fusi orari (Ora standard Cile - America/Santiago
e ora solare dell'isola di Pasqua - Pacific/Easter
) mi danno i secondi sbagliati
Potete controllare se il valore della _timeZone è lo stesso per tutti voi messe a punto? –
@JoeSmith sì, lo è. –
Qual è il valore di _timeZone? Da dove proviene? –