NSDate zwischen zwei gegebenen NSDates

7

Ich bin daran interessiert, eine Methode zu erstellen, um herauszufinden, ob das aktuelle Datum zwischen bestimmten Zeiten an einem bestimmten Tag liegt. Es ist für ein Zeitplanungsprogramm, also möchte ich herausfinden, welches Ereignis zur aktuellen Zeit auftritt. Jeder Tag hat die gleichen Zeiten: 820-900, 900-940, 940-1020 usw. Da dies an jedem beliebigen Tag gemacht werden muss, weiß ich nicht, wie man ein NSDate mit einer bestimmten Zeit erstellt. Ich denke, das könnte mit NSTimeInterval gemacht werden, aber ich bin mir nicht sicher, wie man das instanziiert.

    
Haydn Dufrene 31.12.2009, 23:43
quelle

3 Antworten

26

Dies ist nicht perfekt, aber Sie könnten [NSDate vergleichen:] verwenden, um Ihr Datum an beiden Grenzen zu überprüfen:

%Vor%

Oder kurz:

%Vor%

Ich bin mir sicher, dass es einen besseren Weg für einen komplexen Datumsvergleich gibt, aber das sollte funktionieren.

    
conmulligan 01.01.2010 00:13
quelle
11

Dies ist am einfachsten, wenn Sie -timeIntervalSinceReferenceDate verwenden, um jedes Ihrer Daten in einen NSTimeInterval typisierten Wert umzuwandeln, der eigentlich nur ein double ist.

%Vor%

Von dort aus festzustellen, ob ein Datum zwischen zwei beliebigen Daten liegt, ist nur eine Frage einfacher numerischer Vergleiche.

Wenn Sie aus einer Zeichenfolgendarstellung eines Datums in eine NSDate-Instanz konvertieren müssen, um anschließend ein Zeitintervall abzurufen, verwenden Sie NSDateFormatter .

Wenn Sie ein Datum aus bekannten Datumskomponenten erstellen müssen, verwenden Sie NSCalendar . (Wenn Sie wissen, dass das Jahr 2010 ist, der Monat 4 und der Tag 12 ist, können Sie NSCalendar-Komponenten zum Generieren einer NSDate-Instanz über die Methode -dateFromComponents: verwenden.).

Wie Ben angedeutet hat, kann die NSCalendar-Komponentenschnittstelle auch verwendet werden, um die Stunden & amp; Minute, um zu bestimmen, ob es in einem Bereich ist (was scheinbar eine atypische Verwendung in diesen meisten Ereignissen nicht jeden Tag zur gleichen Zeit passieren würde ... aber ... sicher ... dort Gründe dafür auch!)

    
bbum 01.01.2010 08:25
quelle
4

Sehen Sie sich an - [NSCalendar-Komponenten: fromDate:]. Sie können ein Datum in seine verschiedenen Komponenten "zerlegen", und dann können Sie in diesem Fall die Stunde und Minute betrachten.

    
Ben Gottlieb 01.01.2010 00:56
quelle

Tags und Links