Wie bekomme ich das heutige Datum im gregorianischen Format, wenn der Telefonkalender nicht-gregorianisch ist?

StackOverflow https://stackoverflow.com/questions/6355405

  •  28-10-2019
  •  | 
  •  

Frage

NSDate *now = [[NSDate alloc] init];  

gibt das aktuelle Datum an.

Wenn der Telefonkalender jedoch nicht Gregorianer ist (auf dem Emulator gibt es auch Japaner und Buddhisten), ist das aktuelle Datum nicht Gregorianer.

Die Frage ist nun, wie man in ein gregorianisches Datum umwandelt oder sicherstellt, dass es von Anfang an im gregorianischen Format befindet. Dies ist für eine Serverkommunikation von entscheidender Bedeutung.

Vielen Dank!

War es hilfreich?

Lösung

NSDate stellt nur einen Zeitpunkt dar und hat kein Format an sich.

Um ein NSDATE zu formatieren, um eine Zeichenfolge zu erhalten, sollten Sie NSDateFormatter verwenden. Es verfügt über eine Kalendermobilie, und wenn Sie diese Eigenschaft auf eine Instanz eines gregorianischen Kalenders einstellen, passt das ausgegebene Format zu einem gregorianischen Stil.

NSDate *now = [NSDate date];

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setCalendar:gregorianCalendar];
[formatter setDateStyle:NSDateFormatterFullStyle];
[formatter setTimeStyle:NSDateFormatterFullStyle];

NSString *formattedDate = [formatter stringFromDate:now];

NSLog(@"%@", formattedDate);

[gregorianCalendar release];
[formatter release];

Andere Tipps

Die ausgewählte Antwort eigentlich kann ich sie nicht vergleichen. Für mein Projekt reicht nur Anzeigen nicht aus.

Ich habe endlich eine Lösung, die verdeckt (NSDate) CurrentDate -> Gregoriandate, dann können wir diese NSDATE vergleichen.

Denken Sie nur daran, dass die NSDates vorübergehend verwendet werden sollten. (Es ist nicht mit einem Kalender angeschlossen).

    NSDate* currentDate = [NSDate date];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *gregorianComponents = [gregorianCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate];

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:[gregorianComponents day]];
    [comps setMonth:[gregorianComponents month]];
    [comps setYear:[gregorianComponents year]];
    [comps setHour:[gregorianComponents hour]];
    [comps setMinute:[gregorianComponents minute]];
    [comps setSecond:[gregorianComponents second]];


    NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDate *today = [currentCalendar dateFromComponents:comps];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top