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, dass dies mit NSTimeInterval getan werden könnte, aber ich bin mir nicht sicher, wie man das instanziiert.NSDate zwischen zwei angegebenen NSDates
Antwort
Dies ist nicht perfekt, aber man konnte mit [NSDate vergleichen:] Ihr Datum gegen beide Grenzen zu überprüfen:
NSDate *firstDate = ...
NSDate *secondDate = ...
NSDate *myDate = [NSDate date];
switch ([myDate compare:firstDate]) {
case NSOrderedAscending:
NSLog(@"myDate is older");
// do something
break;
case NSOrderedSame:
NSLog(@"myDate is the same as firstDate");
// do something
break;
case NSOrderedDescending:
NSLog(@"myDate is more recent");
// do something
break;
}
switch ([myDate compare:secondDate]) {
case NSOrderedAscending:
NSLog(@"myDate is older");
// do something
break;
case NSOrderedSame:
NSLog(@"myDate is the same as secondDate");
// do something
break;
case NSOrderedDescending:
NSLog(@"myDate is more recent");
// do something
break;
}
Oder kürzer:
BOOL between = NO;
if (([myDate compare:firstDate] == NSOrderedDescending) &&
([myDate compare:secondDate] == NSOrderedAscending)) {
between = YES;
}
Ich bin sicher, dass es eine bessere Möglichkeit, einen komplexen Datumsvergleich durchzuführen, aber das sollte funktionieren.
Werfen Sie einen Blick auf - [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.
Der einfachste Weg, dies zu tun wäre, -timeIntervalSinceReferenceDate
zu verwenden, um jedes Ihrer Daten in einen NSTimeInterval
typed Wert zu verwandeln, der wirklich nur ein double
ist.
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 mithilfe der NSCalendar-Komponenten eine NSDate-Instanz über die Methode -dateFromComponents:
generieren.).
Wie Ben angegeben, kann NSCalendar der Komponentenschnittstelle auch die Stunde & Minute abtasten verwendet werden, um festzustellen, ob sie in einem Bereich liegt (was scheinbar eine atypische Nutzung dass meist Ereignisse würde nicht jeden Tag passieren zur gleichen Zeit ... aber ... sicher ... es gibt auch Gründe, dies zu tun!)
- 1. kann nicht zwei NSDates vergleichen
- 2. Vergleichen Sie zwei NSDates
- 3. Einfachste Möglichkeit zum Looping zwischen zwei NSDates auf dem iPhone?
- 4. Swift: Drucken Sie alle Termine zwischen zwei NSDate()
- 5. Berechne Sekunden zwischen NSDates in C
- 6. Lokalisierte Datumsbereichs-Zeichenfolge von zwei NSDates abrufen
- 7. Anzahl der Tage zwischen zwei NSDate-Objekten
- 8. Unterschied in Stunden zwischen zwei NSDate
- 9. Wie man überprüft, ob zwei NSDates vom selben Tag sind
- 10. Vergleichen von NSDates
- 11. eine NSArray von NSDates
- 12. XCTAssertEqual: Wie NSDates zu vergleichen?
- 13. Zeitintervall zwischen zwei Daten gibt Null
- 14. Vergleicht man zwei NSDates gibt falsch positive Ergebnisse zurück
- 15. Wie aktive Teilnehmer zwischen zwei angegebenen Daten zählen
- 16. Wie finde ich die Daten zwischen zwei angegebenen Daten?
- 17. Erhalten Sie alle Monatsnamen zwischen zwei angegebenen Daten
- 18. NSDictionary mit NSDates als Schlüssel
- 19. mit NSDate Arbeiten und mit Daten in Objective C
- 20. MongoDB Druckabstand zwischen zwei Punkten
- 21. Die Nummer zwischen den angegebenen Strings abrufen
- 22. bekomme mal zwischen zwei mal den Tag
- 23. NSDate Ergebnisse von - (NSDate *) DatumFromComponents: (NSDateComponents *) Comps
- 24. Vergleichen eines NSDate mit [NSDate date]
- 25. NSDate Nullwert
- 26. Wie kann man mit BeautifulSoup den gesamten Text zwischen nur zwei angegebenen Tags abrufen?
- 27. Wie kann ich alle Zeiten zwischen zwei angegebenen Daten und Zeiten finden?
- 28. iPhone - Anzahl der Tage zwischen zwei Daten erhalten
- 29. NSDate-Einheiten und Berechnungen
- 30. Berechne No.Days zwischen zwei Daten, die zwischen zwei Tagen ist
kein Beispiel. :(:( – bluefloyd8