Scheint eine einfache Sache zu sein, aber ich kann anscheinend keinen Weg finden, dies zu tun.
Es wäre toll, ein paar verschiedene Methoden zu sehen.
Scheint eine einfache Sache zu sein, aber ich kann anscheinend keinen Weg finden, dies zu tun.
Es wäre toll, ein paar verschiedene Methoden zu sehen.
Antworten:
@ Chucks Antwort ist richtig und führt mich zum folgenden Code. Ich 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];
Sie können dies verwenden
NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];
Hoffe das wird dir helfen.
Beispiele sind oft der einfachste Weg zu lernen. Hier einige Beispiele.
Dieser ist der einfachste.
let currentDateTime = Date()
// 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)
// 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)
Es gibt auch andere Möglichkeiten, Daten zu erstellen. Wenn Sie diese lernen und ein Datum anzeigen möchten, lesen Sie meine ausführlichere Antwort .
Siehe die Dokumentation zu NSDate . Sie können die dateFromString:
Methode von NSDateFormatter
oder die dateFromComponents:
Methode von verwenden NSCalendar
.
init
?
Ich habe diesen Thread gefunden, als ich nach einer Antwort auf diese Frage gesucht habe, aber dann habe ich ein gutes Beispiel in einem meiner Big Nerd Ranch Objective-C-Programmierbücher gefunden. Gutschrift an sie, nicht an mich.
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, nicht wahr?
Mitte 2013 und Apple immer noch nicht eine einfache Art und Weise zur Verfügung gestellt einen NSDate Wert einzustellen.
Während meines aktuellen iPad-Projekts konnte ich nicht glauben, dass ich die Produktivität für eine Weile einstellen musste, um meine eigene Hilfsklasse zu schreiben und den Jahreswert von einem NSDate zu erhalten. Ich meine, komm schon, das ist grundlegendes Zeug.
Hier ist die Hilfsklasse, die ich in meinem Projekt verwendet habe, um 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
Mit diesem Code können Sie einen NSDate-Wert festlegen, indem Sie Folgendes verwenden:
NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];
Hinweis: Diese Funktion basiert auf dem Code von hier: https://stackoverflow.com/a/3968411/391605
Meine Lösung bestand darin , den folgenden Code zu verwenden, aber ich stellte fest, dass er manchmal einfach nicht analysiert wurde und null zurückgab .
// 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, dass es am "12. Oktober 2012" kläglich gescheitert ist ... weshalb ich aufgegeben und die oben gezeigte kompliziertere "parseDateString" -Funktion verwendet habe.
Mein Punkt ist ... sei vorsichtig.
Einige der sehr grundlegenden NSDate-Funktionen funktionieren einfach nicht richtig ...
setHour
,setMinute
,setSecond
etc. für eine feinere Körnung.