Grundsätzlich möchte ich herausfinden, ob es am nächsten Tag ist. Also speichere ich das aktuelle Datum (z. B. Jan 2) ständig in einem Plist. Aber das nächste Mal, wenn der Benutzer die Anwendung öffnet, wenn das Datum geändert hat (z. B. Jan 3), möchte ich etwas tun. Beachten Sie, dass eine einfache aufsteigende Reihenfolgeprüfung nicht funktionieren würde, da ich nicht wissen möchte, ob ein Datum später als ein anderes Datum ist, wenn der Unterschied nur in Stunden besteht. Ich muss in der Lage sein, Jan 2 11:50 und Jan 3 2:34 zu unterscheiden, aber nicht Jan 3 2:34 und Jan 3 5:12.Wie zwei Daten (nur Daten, nicht Zeit) in Kakao zu vergleichen?
Antwort
verwende ich die folgende, die ich SO gefunden:
- (BOOL)isSameDay:(NSDate*)date1 otherDay:(NSDate*)date2 {
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents* comp1 = [calendar components:unitFlags fromDate:date1];
NSDateComponents* comp2 = [calendar components:unitFlags fromDate:date2];
return [comp1 day] == [comp2 day] &&
[comp1 month] == [comp2 month] &&
[comp1 year] == [comp2 year];
}
Verwenden NSCalendarDate statt NSDate und vergleichen, was sie kehren von -dayOfCommonEra
@implementation NSDate (sameDayOrNot)
- (BOOL) sameDayAsDate:(NSDate *) otherDate
{
NSCalendarDate *date1 = [[NSCalendarDate alloc] initWithTimeInterval:0 sinceDate:self];
NSCalendarDate *date2 = [[NSCalendarDate alloc] initWithTimeInterval:0 sinceDate:otherDate];
BOOL result = ([date1 dayOfCommonEra] == [date2 dayOfCommonEra]);
[date1 release];
[date2 release];
return result;
}
@end
NSCalendarDate ist veraltet – Abizern
Noch nicht, es ist nicht. – NSResponder
Äh, ja es ist http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/LegacyNSCalendarDate.html Veraltet ist nicht das Gleiche wie entfernt. Außerdem geht es nicht darum, die Äquivalenz zweier Daten zu überprüfen, sondern zu erfahren, ob sie sich an verschiedenen Tagen befinden. – Abizern
am Date Time Programming Guide Blick gibt Ihnen ein Beispiel, wie um die Differenz zwischen zwei Daten als nach Komponente zu berechnen: zum Beispiel:
NSDate *startDate = ...;
NSDate *endDate = ...;
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDate
toDate:endDate options:0];
NSInteger months = [components month];
NSInteger days = [components day];
Meine Version basierend auf Neils (Warnung: ungetestet):
Mine ist - (NSComparisonResult)compare:
auf NSDate ähnlicher. Um zu überprüfen, für Tage gleich sind, tun [myDate compareDayMonthAndYear:otherDate] == NSOrderedSame
- (NSComparisonResult)compareDayMonthAndYear:(NSDate *)date
{
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *selfComponents = [calendar components:unitFlags fromDate:self];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
BOOL dayIsEqual = (selfComponents.day == dateComponents.day && selfComponents.month == dateComponents.month && selfComponents.year == dateComponents.year);
if (dayIsEqual) {
return NSOrderedSame;
}
return [self compare:date];
}
- 1. Wie zwei Daten zusammen mit Zeit in Java zu vergleichen
- 2. Zwei Daten mit der Zeit richtig vergleichen
- 3. Wie zwei Daten in AngularJS zu vergleichen?
- 4. Vergleichen von zwei Daten mit Joda-Zeit
- 5. Python vergleichen zwei Daten
- 6. DateTime zwei Daten vergleichen
- 7. Wie nur Daten zu vergleichen (und nicht die Zeit) in Python
- 8. Wie zwei Daten in Objective-C zu vergleichen
- 9. Vergleichen von Daten in zwei ähnlichen Tabellen
- 10. Wie wird nur der Datumsteil und nicht die Zeit von zwei Daten verglichen?
- 11. Vergleichen von zwei Collections Daten miteinander
- 12. MomentJS Tag diff Daten nur ohne Zeit
- 13. Abfrage, um die Daten zwischen zwei Daten mit nur einer bestimmten Zeit zu erhalten. Duraion
- 14. Wie Daten in der Validierung zu vergleichen?
- 15. Kakao - Vergleichen von Daten, Warnung Passing Argument eines 'vergleichen:' von unverwechselbaren Ziel-c Typ
- 16. Wie vergleichen Daten in Django
- 17. JavaScript: Vergleichen von zwei Daten keine Ausgabe
- 18. Daten in MySQL vergleichen
- 19. SQL vergleichen Daten aus zwei Tabellen
- 20. Wie zwei gleiche Felder in unterschiedlichen Daten vergleichen setzt
- 21. Wie Daten im Winterschlaf zu vergleichen
- 22. Daten in DataView.RowFilter vergleichen?
- 23. Wie Zeit in Angular.js zu vergleichen?
- 24. Fluid vergleichen Daten
- 25. Daten in SQL Server vergleichen
- 26. Makro, um zwei Sätze von Daten zu vergleichen
- 27. Daten vergleichen mit Javascript
- 28. erhalten Daten zwischen zwei Datum Zeit Zellen
- 29. Wie zwei Abfragen zu vergleichen?
- 30. Daten in ng-repeat vergleichen
ursprüngliche Antwort enthält veraltete Code, Austausch: unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; zu diesem: unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; – Borbea
Die Post wurde aktualisiert. Vielen Dank! –