Frage

Für PDT, würde ich "-0700" will.

Ich bin ein Datum in der Vergangenheit immer zu bestimmen, wie lange es her war etwas passiert.

NSDate *then = [NSDate dateWithString:@"1976-04-01 12:34:56 -0700"]; // Note the hard-coded time zone at the end

werde ich die Datumszeichenfolge an einem anderen Ort der Konstruktion, aber ich weiß nicht, wie die lokale Zeitzone zu gelangen.

Ich lese die Apple-Daten und Zeiten die Programmierung für Kakao sowie die NSTimeZone und NSDate Klasse Referenzen, aber es ist einfach zu schwer für mich, die Informationen zusammen zu stellen. Ich könnte wirklich ein paar Zeilen Code verwenden, nur um zu zeigen, wie es verwendet wird.

Aktualisieren : Während kämpfen mit diesem, ich war das Schreiben von Code ein Command Line-Vorlage, so konnte ich die Dinge schnell versuchen. Ich habe gerade versucht, meine vorherigen Code auf dem iPhone und ich bin immer NSDate kann reagieren nicht auf ‚+ dateWithString:‘. Sorry, wenn das zur Verwirrung hinzugefügt, die sich Apple eine solche Basisklasse ändern sich wusste, dass

War es hilfreich?

Lösung

Die Offset-Zeitzone ist am Tag abhängig in vielen Teilen der Welt-die Teile davon, die Sommerzeit / Sommerzeit verwenden.

Der einzig richtige Weg ist, um die gesamte Zeichenfolge von Datum und Zeitzone zusammen zu erzeugen. Verwenden Sie NSDateFormatter hierfür.

Andere Tipps

Mit NSDateFormatter bauen NSDate aus einem String:

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSDate *formatterDate;
formatterDate = [inputFormatter dateFromString:@"1976-04-01 12:34:56 -0700"];

NSString *dateString = [inputFormatter stringFromDate:formatterDate];

NSLog(@"date:%@", dateString);

So können Sie die lokale Zeit von String zu erhalten, zum Beispiel das Datum durch die Zeichenfolge angegeben:

  

"1976.04.01 00.34.56 -0700"

ist in der Zeitzone -0700, (Ich bin in der Zeitzone GMT +1000), so erhalte ich:

  

2009-11-17 22: 13: 46,480   cmdline [10593: 903] Datum: 1976.04.02   05.34.56 +1000

Der beste Weg ist, um wahrscheinlich einen einfachen Kalender Formatierer verwenden

NSCalendarDate * date = [NSCalendarDate calendarDate];
[date setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PDT"]];
NSLog([date descriptionWithCalendarFormat:@"%z"]);

das wird ausgegeben '-0700'

oder die zweite Zeile auslassen, wenn Sie die aktuelle Zeitzone des Systems (nicht sicher, was Sie fragen) wollen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top