NSDate äußert sich in verschiedenen Zeitzonen, d.h. die lokale Zeitzone (GMT-400) zu PST

Ich weiß, wie Sie NSTimeZone zur Ableitung der offset für die aktuelle Uhrzeit in einer anderen Zeitzone. NSDate gibt immer relativ zu GMT, also wie kann ich daraus einen string mit der richtigen Zeit-zone Informationen? also nehme ich die aktuelle Zeit, wo ich bin (EST) und mit NSTimeZone am Ende nach Abzug der 3 Stunden notwendig, stellen Sie die Uhrzeit in PST. Aber alles, was ich getan habe, ist zu subtrahieren 3 Stunden von der Zeit, die ist noch dargestellt, relativ zu meiner Zeit-zone. Wie bekomme ich NSDateFormatter ausspucken der Zeit, mit dem Ziel Zeit-zone?

Einer Wende, die ich versuchte, war:

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; //for PST
NSDateComponents *dc = [cal components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:now];
[cal setTimeZone:tz];
NSDate *newDate = [cal dateFromComponents:dc];

Keine Liebe. Ich könnte die einzelnen Komponenten Datum und Komponieren ein string, aber es wäre nicht lokalisierbar.

Einem verwandten problem:

NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; //for PST
NSString *abbreviation = [tz abbreviation];
NSString *name = [tz name];

Beide abbreviation und name am Ende der Rückkehr GMT-0800, nicht PST-als ich erwarten würde. So konnte ich auch nicht mehr tun oben, wenn ich wollte. Was mache ich falsch?

InformationsquelleAutor rsswtmr | 2010-03-23

Schreibe einen Kommentar