¿Cómo saber el desfase actual de la zona horaria en el dispositivo en HORAS?iPhone: Encuentre la compensación actual de la zona horaria en HORAS
Respuesta
NSDate *sourceDate = [NSDate dateWithTimeIntervalSinceNow:3600 * 24 * 60];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
float timeZoneOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate]/3600.0;
NSLog(@"sourceDate=%@ timeZoneOffset=%d", sourceDate, timeZoneOffset);
Hay un objeto NSTimeZone muy agradable que le dará el desplazamiento de GMT en el segundo huso horario:
float timezoneoffset = ([[NSTimeZone systemTimeZone] secondsFromGMT]/3600.0);
Para más información, véase entrada de blog
http://blog.indieiphonedev.com/2011/01/09/getting-the-timezone-on-the-device/
Recuerde que la compensación no es necesariamente un entero - algunos los países tienen compensaciones de media (o cuarto) hora (veo que la publicación lo menciona, es solo en caso de que las personas no puedan leerlo). –
Solo quería agregar que este código evita algunos riesgos potenciales de la respuesta marcada como correcta. –
El enlace a la publicación del blog en respuesta está muerto. – Pang
no hacer usa un int !!! Copié este código y ahora tengo un error en mi aplicación. Algunas zonas horarias son .5 horas
Utilice:
float offset = [timezone secondsFromGMTForDate:self.date]/3600.0;
y no se olvide el 0,0 detrás 3600
Para aquellos que buscan la corriente desplazamiento de zona horaria como una cadena, tratan:
NSDateFormatter *localTimeZoneFormatter = [NSDateFormatter new];
localTimeZoneFormatter.timeZone = [NSTimeZone localTimeZone];
localTimeZoneFormatter.dateFormat = @"Z";
NSString *localTimeZoneOffset = [localTimeZoneFormatter stringFromDate:[NSDate date]];
En mi zona horaria, localTimeZoneOffset
contiene -0700
Gracias. Ahorré mis horas. –
-(void)getDeviceUTCOffset{
NSDate *date = [NSDate date];
NSTimeZone* deviceTimeZone_ = [NSTimeZone systemTimeZone];
float offset = [deviceTimeZone_ secondsFromGMTForDate:date]/3600.0;
}
Para probar el código - de prueba en un dispositivo
dispositivo de cambio de zona horaria en
Settings > General > Date Time
Turn off SET AUTOMATICALLY
Then tap TimeZone and choose major cities east/west of you
Run code and check float offset
comparar el valor a las ciudades en este sitio
por ejemplo, heres Helsinki
Hora estándar: UTC/GMT +2 horas - como del NoV
http://www.timeanddate.com/worldclock/city.html?n=101
Comprobar contra los países con el horario de verano británico o su equivalente.
de Uso NSTimeZone localTimeZon e
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSInteger seconds = [timeZone secondsFromGMT];
NSLog(@"TZ : %@ : Seconds %ld",[timeZone abbreviation],(long)seconds);
int h = (int)seconds/3600;
int m = (int)seconds/60 % 60;
NSString *strGMT = @"";
if (h>=0)
strGMT = [NSString stringWithFormat:@"+%02d:%02d", h, m];
else
strGMT = [NSString stringWithFormat:@"%03d:%02d", h, m];
NSLog(@"GMT -/+ HH:mm: %@",strGMT);
El código anterior no produce valores correctos para los segundos negativos deGMT y los minutos que no son cero. Sugeriría reemplazar la condición con 'if (0 <= segundos)' y la declaración 'else' con' strGMT = [NSString stringWithFormat: @ "-% 02d:% 02d", -h, -m]; ' –
Aquí está una manera fácil de hacer esto en Swift 3:
let offsetInHours = Double(TimeZone.current.secondsFromGMT())/3600.0
- 1. Obtener la zona horaria actual en la aplicación de Android
- 2. Obtener la fecha y hora de la zona horaria del dispositivo iPhone actual desde la aplicación UTC-5 de la zona horaria y la aplicación iPhone?
- 3. Obtener compensación de zona horaria para una ubicación determinada
- 4. Powershell Mostrar la hora actual con la zona horaria
- 5. ¿Obtener la fecha actual, dada una zona horaria en PHP?
- 6. Cómo obtener la zona horaria actual del usuario en C#
- 7. ajustar la zona horaria
- 8. Cómo ignorar la zona horaria del usuario y forzar la fecha() utiliza la zona horaria específica
- 9. Compensación de una zona horaria dada desde GMT en la secuencia de comandos de linux shell
- 10. impulso: obtener la local_date_time actual con la zona horaria actual de la máquina
- 11. ¿NSDate en CoreData encapsula la zona horaria?
- 12. Tiempo de compensación para horario de verano en una zona horaria específica usando JavaScript
- 13. Java: zona horaria por la que la zona horaria diferente da el mismo valor en milisec
- 14. Número de desplazamiento de zona horaria en Objective-c?
- 15. Compensación UTC en PHP
- 16. Cambios en la zona horaria rusa
- 17. ¿Cómo cambio la zona horaria en CakePHP?
- 18. Posición del GPS en la zona horaria
- 19. Rieles: obtenga #beginning_of_day en la zona horaria
- 20. Cambiar la zona horaria en MSYS
- 21. Cambiar la zona horaria en Android programáticamente
- 22. Cálculo de la zona horaria de Joda
- 23. Fecha de PostgreSQL() con la zona horaria
- 24. DateTime.ParseExact, haga caso de la zona horaria
- 25. HttpCookie.Expire las implicaciones de la zona horaria?
- 26. Determinar la zona horaria de un usuario
- 27. ¿La forma más simple de obtener la hora actual en la zona horaria actual usando boost :: date_time?
- 28. Obtener zona horaria del cliente (no cantidad de compensación GMT) en JS
- 29. Tiempo de conversión WCF basado en la zona horaria automáticamente
- 30. Obtener la marca de tiempo actual de la zona horaria específica
Hay dos posibles problemas con este código: (1) realmente debería usar "localTimeZone" en lugar de "systemTimeZone" (que normalmente termina siendo el mismo). (2) sourceDate debería ser [NSDate date], me encontré con un problema donde timeZoneOffset estaba equivocado por una hora al usar la fecha dada fuera del día. ¿Puedes explicar por qué usas una fecha de origen diferente por día? –