objective c - Convierta NSDate a NSString con NSDateFormatter con TimeZone sin GMT Time Modifier
objective-c nstimezone (2)
Elimine el carácter ''z'' al final de la cadena de formato si no desea mostrar la zona horaria.
EDITAR
Por otro lado, si solo desea mostrar el nombre de la zona horaria, simplemente haga que la ''z'' esté en mayúscula. ((edición: deje la ''z'' en minúsculas para la zona horaria nombrada, es decir, PST y mayúscula ''Z'' para -0800))
EDITAR
La ''z'' minúscula funciona bien para todas las demás zonas horarias, pero desafortunadamente GMT es un caso especial. Así que lo más fácil es omitir la ''z'' y añadir "GMT" a la fecha formateada.
Estoy inicializando mi NSDateFormatter así:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
dateString
es ahora:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
Quiero deshacerme del "+00: 00"
Supongo que en http://unicode.org/reports/tr35/tr35-6.html#Time_Zone_Fallback podría tener un problema de localización. Estoy trabajando alrededor de esto ahora mismo eliminando "+00: 00" manualmente, pero eso no es lo ideal.
EDITAR
Intenté un par de nuevas formas de crear NSTimeZone, pero ambas producen la misma dateString
. dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
La respuesta aceptada tenía un error tipográfico.
Por otro lado, si solo desea mostrar el nombre de la zona horaria, simplemente haga que la ''z'' esté en mayúscula.
deje la ''z'' en minúscula para la zona horaria nombrada, es decir, PST y ''Z'' en mayúscula para -0800
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMMM dd, yyyy (EEEE) HH:mm:ss z Z"];
NSDate *now = [NSDate date];
NSString *nsstr = [format stringFromDate:now];
// 23 de enero de 2013 (miércoles) 12:33:46 PST -0800