6
votes

Comment comparer le temps

Comment comparer le temps dans l'objectif C? XXX


1 commentaires

Pas de duplication exacte, mais vérifiez ceci: Stackoverflow.com/questions/5367502/...


6 Réponses :


0
votes
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:22];
[comps setMonth:03];
[comps setYear:2011];
[comps setHour:21];
[comps setMinute:00];
NSCalendar *gregorian = [[NSCalendar alloc]
    initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *earlierDateVariable = [gregorian dateFromComponents:comps];
[comps release];
[gregorian release];

3 commentaires

Comment puis-je définir précédemmentViablesVariables = 21h00?


Avez-vous vérifié la documentation très approfondie, avec des exemples inclus, fournis par Apple? J'ai édité ma réponse.


Bien que votre réponse soit généralement correcte, je suis sûr que ce n'est pas ce que Sveta demandait ...



16
votes

Si vous souhaitez obtenir l'heure actuelle et comparer à quelques reprises, vous devez utiliser nsdate code>, nsdatecomponents code> et nscalendar .

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:[NSDate date]];
NSInteger currentHour = [components hour];
NSInteger currentMinute = [components minute];
NSInteger currentSecond = [components second];

if (currentHour < 7 || (currentHour > 21 || currentHour == 21 && (currentMinute > 0 || currentSecond > 0))) {
    // Do Something
}


0 commentaires

-2
votes

Si quelqu'un a besoin, il s'agit d'un code permettant de créer des sections dans une tableView en fonction de la date des objets.

Méthode pour obtenir des dates pour aujourd'hui, hier, etc. (tiré de la remontée du projet DateUtil Classe): P >

// Sort tableData objects according to the date
    for (MCMessage *mcMessage in self.tableData) {
        NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:mcMessage.dateTime];
        NSInteger day = [components day];
        NSInteger month = [components month];
        NSInteger year = [components year];

        NSLog(@"Day:%d, Month:%d, Year:%d. Today day:%d. Yesterday:%d", day, month, year, dateUtil.todayComponents.day, dateUtil.yesterdayComponents.day);

        if ((dateUtil.todayComponents.day == day) && (dateUtil.todayComponents.month == month) && (dateUtil.todayComponents.year == year))
        {
            [self.todayData addObject:mcMessage];
        }
        else if ((dateUtil.yesterdayComponents.day == day) && (dateUtil.yesterdayComponents.month == month) && (dateUtil.yesterdayComponents.year == year))
        {
            [self.yesterdayData addObject:mcMessage];
        }
        else
        {
            [self.soonerData addObject:mcMessage];
        }
    }


1 commentaires

Cela ne répond pas à la question et est incorrect. Cela peut échouer autour de changements de DST.



10
votes

Theres une formule parfaite pour cela. Juste pour les futures références

ci-dessous est le code d'échantillon: xxx


1 commentaires

Travaillé pour moi. Dû convertir 7h00 et 21h00 à 24 heures



0
votes

Pour vérifier l'heure actuelle ou tout moment entre deux fois: XXX PRE>


-(BOOL)isDateComponent:(NSDateComponents*)components withinStartHour:(int)startH startMin:(int)startM endHour:(int)endH endMin:(int)endM
{
    if (endH < startH) {
        return (  [self isDateComponent:components betweenStartHour:startH startmin:startM endHour:23 endMin:59]  ||
                [self isDateComponent:components betweenStartHour:0 startmin:0 endHour:endH endMin:endM]  );
    }
    else {
        return [self isDateComponent:components betweenStartHour:startH startmin:startM endHour:endH endMin:endM];
    }


}



-(BOOL)isDateComponent:(NSDateComponents*)components betweenStartHour:(int)startH startmin:(int)startM endHour:(int)endH endMin:(int)endM
{

    int currentH = components.hour;
    int currentM = components.minute ;

    DDLogVerbose(@"start : %i-%i, end : %i-%i, current:%i-%i",startH,startM,endH,endM,currentH,currentM);
    startM  = startM + startH * 60;
    endM = endM + endH * 60;

    currentM = components.minute + currentH*60;

    if ( startM <= currentM && currentM < endM ) {
        return YES;
    }
    else {
        return NO;
    }


}


0 commentaires

0
votes

J'ai utilisé la réponse donnée ci-dessus par Rye. Je devais juste convertir mes 7h00 et 21h00 à 24 heures. Voici la méthode que j'ai utilisée xxx

}


0 commentaires