Fondamentalement, je veux savoir si c'est le jour suivant. Donc, je stocke la date actuelle (par exemple Jan 2) constamment dans un plist. Mais la prochaine fois que l'utilisateur ouvre l'application, si la date a changé (par exemple Jan 3), je veux faire quelque chose. Notez qu'une simple vérification ascendante d'ordre ne fonctionnerait pas parce que je ne veux pas savoir si une date est postérieure à une autre date, si la différence est seulement en heures. Je dois être en mesure de différencier Jan 2 11h50 et Jan 3 2:34 mais pas Jan 3 2:34 et Jan 3 5:12.Comment comparer deux dates (dates seulement, pas le temps) dans le cacao?
Répondre
J'utilise ce qui suit que j'ai trouvé SO:
- (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];
}
Utilisation NSCalendarDate au lieu de NSDate et comparer ce qu'ils reviennent de -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 est obsolète – Abizern
Pas encore, ce n'est pas le cas. – NSResponder
Euh, oui c'est http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/LegacyNSCalendarDate.html Déconseillé n'est pas la même chose que supprimé. En outre, la question n'est pas de vérifier l'équivalence de deux dates, mais de savoir si elles sont à des dates différentes. – Abizern
En regardant le Date Time Programming Guide vous donne un exemple de la façon dont pour calculer la différence entre deux dates par élément: par exemple:
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];
Ma version basée sur Neils '(avertissement: non testé):
Mine est plus similaire à - (NSComparisonResult)compare:
sur NSDate. Pour vérifier les jours étant égales par ailleurs, faire [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. Comment comparer deux dates
- 2. Calculer le temps entre deux dates
- 3. Comparer deux dates - sans heure et seconde
- 4. Comparer des dates dans MySQL
- 5. j2me - comparer 2 dates
- 6. Comment puis-je comparer deux dates dans vbscript/ASP?
- 7. comment comparer les dates dans iphone sdk?
- 8. JavaScript aide - comparer deux dates dans (jj/MMM/aaaa) format
- 9. Comparer des dates en Javascript
- 10. Trouver des dates manquantes entre deux dates
- 11. Comparer des dates dans SQL Server
- 12. Custom List Comparer des dates dans Sharepoint
- 13. Sélectionnez le minimum de deux dates
- 14. Comment soustraire deux dates dans Django/Python?
- 15. deux dates Comparaison mysql
- 16. Comment comparer les dates en Java?
- 17. SQL Server 2005 comparer les dates
- 18. Comment je campare deux dates à Iphone?
- 19. comment comparer les dates en php et sql?
- 20. Comment avoir un temps entre deux dates quand elles ne sont pas dans la même journée?
- 21. comment soustraire deux dates dans l'objectif c
- 22. en train de comparer avec des dates?
- 23. Calculer la différence de temps (seulement les heures de travail) en minutes entre deux dates
- 24. Regex pour comparer 2 dates en javascript
- 25. Perl Comparer les dates avec MySQL
- 26. Temps total entre les dates dans MySQL
- 27. Comparer les dates DataAnnotations validation asp.net mvc
- 28. Date de comparaison entre deux dates?
- 29. Calculer deux dates avec PHP?
- 30. Comment calculez-vous le nombre de semaines entre deux dates?
réponse originale contient du code désapprouvée, échange: unitFlags non signés = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; à ceci: unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; – Borbea
Mise à jour du post. Merci! –