Convertire NSDate a NSString con NSDateFormatter con TimeZone senza GMT Tempo Modifier
-
02-10-2019 - |
Domanda
Sono inizializzazione mia NSDateFormatter nel seguente modo:
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
è ora:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
Voglio sbarazzarsi del "+00: 00"
sto cercando di indovinare da http://unicode.org/reports/tr35 /tr35-6.html#Time_Zone_Fallback che io possa avere un problema di localizzazione. Sto lavorando intorno a questo momento rimuovendo il. "+00: 00" manualmente, ma che non è l'ideale
Modifica
Ho provato un paio di nuovi modi per creare il NSTimeZone, ma entrambi producono lo stesso dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
Soluzione
Rimuovere il carattere finale 'z' dalla stringa di formato, se non si desidera visualizzare il fuso orario.
Modifica
D'altra parte, se si desidera solo per visualizzare il nome fuso orario, basta fare la maiuscola 'z'. ((Edit: lasciare la minuscola 'z' per fuso orario di nome, vale a dire PST e maiuscolo 'Z' per -0800))
Modifica
Minuscole 'z' funziona bene per tutti gli altri fusi orari, ma purtroppo GMT è un caso speciale. Quindi la cosa più semplice da fare è di omettere solo la 'z' e aggiungere "GMT" per la data formattata.
Altri suggerimenti
risposta accettata aveva un errore di battitura.
D'altra parte, se si desidera solo per visualizzare il nome fuso orario, basta fare la maiuscola 'z'.
lasciare la minuscola 'z' per fuso orario di nome, vale a dire PST e maiuscolo 'Z' per -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 Gennaio 2013 (Mercoledì) 12:33:46 PST -0800