Convertir NSDate à NSString avec NSDateFormatter avec TimeZone sans GMT Heure Modificateur
-
02-10-2019 - |
Question
Je suis mon initialisation NSDateFormatter ainsi:
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
est maintenant:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
Je veux me débarrasser de la "+00: 00"
Je devine que de http://unicode.org/reports/tr35 /tr35-6.html#Time_Zone_Fallback que je pourrais avoir un problème de localisation. Je travaille autour de ce moment en supprimant le. « +00: 00 » manuellement, mais ce n'est pas idéal
EDIT
J'ai essayé quelques nouvelles façons de créer le NSTimeZone, mais ils ont tous deux produisent la même dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
La solution
Supprimer le caractère de fuite « z » de la chaîne de format si vous ne voulez pas afficher le fuseau horaire.
EDIT
Par contre, si vous voulez juste afficher le nom du fuseau horaire, juste faire la majuscule « z ». ((Edit: laisser la lettre minuscule 'z' de fuseau horaire désigné, c.-à-PST et majuscule 'Z' pour -0800))
EDIT
Minuscules « z » fonctionne très bien pour tous les autres fuseaux horaires, mais malheureusement GMT est un cas particulier. Donc, la meilleure chose à faire est d'omettre tout le « z » et append « GMT » à la date formatée.
Autres conseils
réponse acceptée avait une faute de frappe.
Par contre, si vous voulez juste afficher le nom du fuseau horaire, juste faire la majuscule « z ».
quittent le minuscule « z » pour fuseau horaire désigné, c.-à-PST et majuscule « Z » pour -0.800
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 Janvier, 2013 (mercredi) 12:33:46 PST -0800