2010-11-03 13 views
0

Dans mon sélecteur de date, je peux sélectionner une date dans la liste.Comparaison d'une date du sélecteur à la date actuelle

je l'enregistrer dans ma chaîne pickUpDateTime

self.pickUpDateTime = [NSString stringWithString:[apiFormat stringFromDate:d]]; 

Je vais avoir un problème où l'utilisateur est en mesure de choisir une date dans le passé. Y a-t-il un moyen d'obtenir le jour actuel et de vérifier que c'est dans le futur?

Ma chaîne contient la date comme celle-ci 2010-11-04. L'utilisateur ne devrait pas être en mesure de sélectionner un jour dans le passé ou le jour actuel.

Merci -Code

Répondre

1

Vous pouvez obtenir la date et l'heure avec:

NSDate *now = [NSDate date]; 

Comparez les 2 dates avec:

if ([d compare:now] == NSOrderedDescending) { 
    // d is later than now 
} else { 
    // d is earlier than or equal to now 
} 
0

Si vous utilisez un UIDatePicker, il suffit de mettre

datePicker.minimumDate = [NSDate dateWithTimeIntervalSinceNow:24*3600]; 

par exemple. pour permettre des dates à partir de demain. Le retour de la chaîne de date "2010-11-04" à un objet NSDate est possible mais fastidieux. (mais si vous insistez, jetez un oeil à NSDateFormatter)

0

Beaucoup de réponses ci-dessus donnent de bons conseils sur le travail avec NSDates en général; les choses sont un petit peu plus compliquées si vous voulez arrondir au début de la journée pour dire par exemple. «au moins demain» plutôt que «au moins 24 heures».

En termes généraux:

  1. obtenir une instance de NSCalendar pour représenter le calendrier grégorien
  2. utiliser le NSCalendar pour convertir un NSDate en un NSDateComponents représentant seulement le jour, le mois et l'année
  3. utiliser la NSCalendar pour convertir le NSDateComponents en un NSDate
  4. utiliser arithmétique comme recommandé ailleurs pour incrémenter le NSDate un jour dans le futur, par exemple

je dois tableau de bord, mais les méthodes pertinentes sont:

  • NSCalendar + currentCalendar ou -initWithCalendarIdentifier: NSGregorianCalendar d'être très sûr
  • NSCalendar -Composants: fromDate: (le premier paramètre est un champ de drapeau indiquant les bits de la date à laquelle vous devez remplir) et -dateFromComponents:
  • NSDate -timeIntervalSinceDate:
0
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 

    NSString *tempStr=[NSString stringWithFormat:@"%@",[df stringFromDate:datePicker.date]]; 

    txtBirth.text=tempStr; 

    NSString *birthDate = tempStr; 
    NSDate *todayDate = [NSDate date]; 

    int time = [todayDate timeIntervalSinceDate:[df dateFromString:birthDate]]; 

    int numberOfDays = time/86400; 

entendre le nombre de données différence de données de retour .....