Frage

Es scheint wie eine einfache Sache, aber ich kann nicht scheinen, einen Weg zu finden, es zu tun.

Es wäre toll, ein paar verschiedene Methoden, um zu sehen.

War es hilfreich?

Lösung

@ Antwort Chucks richtig ist, und leite mich auf den folgenden Code. Dachte, ich würde teilen:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

Andere Tipps

Sie können mit diesem

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

Hope dies wird Ihnen helfen.

Wenn Sie sprechen über einen bestimmten Kalendertag statt einer Unixy Datum, möchten Sie wahrscheinlich NSCalendar des dateFromComponents:.

Swift Beispiele

Beispiele sind oft der einfachste Weg, zu lernen. Hier sind ein paar Beispiele.

Jetzt

Dies ist die einfachste.

let currentDateTime = Date()

20. Februar 2017

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

1. April 1976

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

Sie benötigen weitere Details ...?

Es gibt auch andere Möglichkeiten, um Termine zu erstellen, zu. Wenn Sie möchten, die lernen, und wie auf Anzeige ein Datum, dann meine vollere Antwort sehen .

Sehen Sie die Dokumentation für NSDate . Sie können die dateFromString: Methode der NSDateFormatter oder dateFromComponents: Methode der NSCalendar

Ich habe diesen Thread, während auf eine Antwort auf diese Frage suchen, aber dann fand ich ein gutes Beispiel in einem meiner Big Nerd-Ranch Objective-C-Programmierung Buch. ich gutschreiben zu ihnen nicht.

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

Es ist lächerlich, ist es nicht?

Mitte 2013 und Apple noch hat keine einfache Art und Weise zur Verfügung gestellt einen NSDate Wert zu setzen.

Während meiner aktuellen iPad Projekt, konnte ich nicht glauben, dass ich aufhören Produktivität hatte eine Zeit lang meine eigene Helfer Klasse zu schreiben, um den Wert für das Jahr von einem NSDate zu erhalten. Ich meine, komm, ist diese grundlegende Dinge.

Wie auch immer, hier ist die Helfer Klasse ich in meinem Projekt verwendet, eine Zeichenfolge in einen NSDate Wert zu konvertieren:

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

Sie diesen Code verwenden, könnten Sie einen NSDate Wert mit so etwas wie ein:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

Hinweis: Diese Funktion wurde auf Code basiert von hier genommen: https://stackoverflow.com/a/3968411/391605

Meine Lösung war den folgenden Code zu verwenden, aber ich finde, dass manchmal , es wäre einfach nicht analysieren, und würde zurückkehren null .

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

Ich erinnere mich, es scheitert kläglich auf „Okt 12, 2012“ ... weshalb ich aufgab und verwendet, um die mehr komplizierte „parseDateString“ -Funktion oben gezeigt.

Mein Punkt ist ... vorsichtig sein.

Einige der sehr-Grund NSDate Funktionen funktionieren einfach nicht richtig ...

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