NSDate Zeitzone ändern
Ich Schreibe eine app, die beinhaltet Zeitzone. Ich will schnappen Sie sich das Gerät des Benutzers, die Zeit, können Anruf, dass dateA
, und ich habe ein Ziel-Datum, das immer in EDT Zeitzone (dateB
).
Ich möchte die Differenz zwischen 2 Daten und dem Benutzer zeigen, aber in dateB
's time zone.
z.B.:
Benutzer-Gerät Uhrzeit ist 07:30 UHR PDT, und dateB
ist 11:00 Uhr EDT.
Also der Zeitunterschied von 30 Minuten.
Mein Algorithmus ist:
1) Benutzer, Gerät, Zeit
2) zu konvertieren EDT
3) ergreifen Sie die Zeit Unterschied zwischen dateA
und dateB
Mein Problem ist, nachdem ich das Gerät des Benutzers, Zeit [NSDate date]
, und gehen Sie durch DateFormatter
mit der Zeitzone MESZ. Die Zeit ändert sich nicht.
EDIT::
NSDate *localDate = [NSDate date]; //this will have 7:30AM PDT
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]];
NSString *convertedTimeString = [dateFormatter stringFromDate:localDate];
Wie kommen die convertedTimeString nicht enthalten, 10:30 Uhr in EDT?
Was mache ich falsch?
- Es gibt keine Zeitzone für Datum, also, wenn Sie das Datum mit der richtigen Zeitzone ist, können Sie berechnen die Differenz ohne zu viele Umbauten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
NSDate
gespeichert ist, in einer Zeitzone Neutrale Art und Weise. Es ist bis zu denNSDateFormatter
tatsächlich-format für eine gegebene Zeitzone mit -[NSDateFormatter setTimeZone:]. Wenn Sie möchten, eine Zeichenfolge ausNSDate
gibt es auch -[NSDate descriptionWithCalendarFormat:timeZone: (Zeitzone) locale:], aber es ist normalerweise besser, verwenden Sie einNSDateFormatter
statt.GMT
mitPDT
(dies ist Ihre Quelle der Zeitzone). Jetzt haben Sie ein date-Objekt, und das date-Objekt ist nicht verpflichtet, ein Zeit-zone (der Teil ist wichtig zu verstehen: NSDate ist Zeit-zone neutral). Wenn Sie möchten, zu speichern oder zu übertragen, das Datum, das ist, was Sie wollen, zu speichern oder zu verbreiten. Dann für die Anzeige, Sie wieder füttern Sie, um ein NSDateFormatter, dieses mal zum Ziel gesetzt, die Zeitzone und das konvertieren des Datums in einen string.