J'aimerais trouver le nombre total de jours entre deux dates.
E.g. Aujourd'hui, c'est le 01-01-2011 (DD-MM-AAAAYY) et la deuxième date est (25-03-2011), comment puis-je trouver le nombre total de jours? p>
NSDate *currentdate=[NSDate date]; NSLog(@"curretdate is ==%@",currentdate); NSDateFormatter *tempFormatter1 = [[[NSDateFormatter alloc]init]autorelease]; [tempFormatter1 setDateFormat:@"dd-mm-YYYY hh:mm:ss"]; NSDate *toDate = [tempFormatter1 dateFromString:@"20-04-2011 09:00:00"]; NSLog(@"toDate ==%@",toDate);
9 Réponses :
NSCalendar *Calander = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; NSDateComponents *comps = [[NSDateComponents alloc] init]; [dateFormat setDateFormat:@"dd"]; [comps setDay:[[dateFormat stringFromDate:[NSDate date]] intValue]]; [dateFormat setDateFormat:@"MM"]; [comps setMonth:[[dateFormat stringFromDate:[NSDate date]] intValue]]; [dateFormat setDateFormat:@"yyyy"]; [comps setYear:[[dateFormat stringFromDate:[NSDate date]] intValue]]; [dateFormat setDateFormat:@"HH"]; [comps setHour:05]; [dateFormat setDateFormat:@"mm"]; [comps setMinute:30]; NSDate *currentDate=[Calander dateFromComponents:comps]; NSLog(@"Current Date is :- '%@'",currentDate); [dateFormat setDateFormat:@"dd"]; [comps setDay:[[dateFormat stringFromDate:yourDate] intValue]]; [dateFormat setDateFormat:@"MM"]; [comps setMonth:[[dateFormat stringFromDate:yourDate] intValue]]; [dateFormat setDateFormat:@"yyyy"]; [comps setYear:[[dateFormat stringFromDate:yourDate] intValue]]; [dateFormat setDateFormat:@"HH"]; [comps setHour:05]; [dateFormat setDateFormat:@"mm"]; [comps setMinute:30]; NSDate *reminderDate=[Calander dateFromComponents:comps]; //NSLog(@"Current Date is :- '%@'",reminderDate); //NSLog(@"Current Date is :- '%@'",currentDate); NSTimeInterval ti = [reminderDate timeIntervalSinceDate:currentDate]; //NSLog(@"Time Interval is :- '%f'",ti); int days = ti/86400; [dateFormat release]; [Calander release]; [comps release]; Hope It will work for you........
désolé mais je ne peux pas comprendre votre commande et j'ai essayé une autre date et cela me donnera -145 jours de différence que ce n'est pas vrai
S'il vous plaît essayez ceci. J'espère que cela vous aide ...
NSDateFormatter *df=[[NSDateFormatter alloc] init]; // Set the date format according to your needs [df setDateFormat:@"MM/dd/YYYY hh:mm a"]; //for 12 hour format //[df setDateFormat:@"MM/dd/YYYY HH:mm "] // for 24 hour format NSDate *date1 = [df dateFromString:firstDateString]; NSDate *date2 = [df dateFromString:secondDatestring]; NSLog(@"%@f is the time difference",[date2 timeIntervalSinceDate:date1]); [df release];
Essayez ceci
Tout en utilisant du timing précis, je recevais une différence de jour de calendrier de temps. Ceci est la solution correcte! Super!
Merci Nfrik. Pouvez-vous m'aider à autre chose?
Vous devriez probablement indiquer que cela a été copié de la réponse de Joshua Weinberg ici: Stackoverflow.com/a/3142380/19679
Dans votre format de date, TOR U définissez le problème, c'est DD-MM-AAAAYY HH: MM: SS. Peut-être que c'était le problème .. u Get Date incorrecte et ne pas obtenir la réponse, j'envoie un code de bit Litte pour obtenir la diffrence de la journée.
p> Nous pouvons trouver la différence de date à l'aide de la fonction suivante: P > de Abizern`s ANS. Trouver plus d'infromation pour nsdatecomonent < fort> ici. strong> p> p>
Soyez prudent, cela ne prend pas en compte des heures. Par exemple, si la différence est par exemple 1,6 jours, il peut retourner 1 jour au lieu de 2, et cela peut être pire dans le cas particulier, il y a eu un commutateur DST entre les deux dates. Préférez utiliser NsdatEcomponents pour récupérer des composants de date tels que jours, mois, années et ainsi de suite.
Ok mais vous pouvez facilement comprendre cette logique simple. et tout le monde en fait du code après avoir eu une idée
@Ajpatel Comment puis-je obtenir des enregistrements de date.Example: 12-09-2016 00:00:00 Entre 12-09-2016 23:59:59
@Krutarthpatel Utilisez le filtre de prédicat sur votre collection. Comme "@" Datefield>% @ et datefield <=% @ ", startdate, enddate"
Un moyen plus simple de le faire est: et les résultats sont les suivants: P> Date de début, 2011-01-01 00:00:00 +0000 P>
Date de fin, 2011-03-25 00:00:00 +0000 P>
83 p>
BlockQuote> Essayer d'utiliser et manipuler des secondes pour calculer des différences de temps est une mauvaise idée. Il existe une charge complète de classes et de méthodes fournies par cacao pour des calculs calendriers et vous devez les utiliser autant que possible. P> p>
// Essayez-le
if((![txtFromDate.text isEqualToString:@""]) && (![txtToDate.text isEqualToString:@""])) { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MM/dd/yyyy"]; NSDate *startDate = [formatter dateFromString:txtFromDate.text]; NSDate *endDate = [formatter dateFromString:txtToDate.text]; unsigned flags = NSDayCalendarUnit; NSDateComponents *difference = [[NSCalendar currentCalendar] components:flags fromDate:startDate toDate:endDate options:0]; int dayDiff = [difference day]; lblNoOfDays.text =[NSString stringWithFormat:@"%d",dayDiff]; }
Pour trouver le nombre de dates entre la date de début de la date de fin.
NSCalendar *cale=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; unsigned unitFlags=NSMonthCalendarUnit| NSDayCalendarUnit; NSDateComponents *comp1=[cale components:unitFlags fromDate:startDate toDate:endDate options:0]; NSInteger days=[comp1 day]; NSLog(@"Days %ld",(long)days);
NSDate *dateA; NSDate *dateB; NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:dateA toDate:dateB options:0]; NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
//write this code in .h file { NSDate *startDate,*EndDate; NSDateFormatter *Date_Formatter; } //write this code in .h file`enter code here` - (void)viewDidLoad { [super viewDidLoad]; Date_Formatter =[[NSDateFormatter alloc]init]; [Date_Formatter setDateFormat:@"dd-MM-yyyy"]; UIToolbar *numbertoolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; numbertoolbar.barStyle = UIBarStyleBlackTranslucent; numbertoolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],nil]; [numbertoolbar sizeToFit]; Txt_Start_Date.inputAccessoryView = numbertoolbar; [Txt_Start_Date setInputView:Picker_Date]; Txt_End_Date.inputAccessoryView = numbertoolbar; [Txt_End_Date setInputView:Picker_Date]; [Picker_Date addTarget:self action:@selector(updateTextfield:) forControlEvents:UIControlEventValueChanged]; // Do any additional setup after loading the view, typically from a nib. } -(void)doneWithNumberPad { if ([Txt_Start_Date isFirstResponder]) { [Txt_Start_Date resignFirstResponder]; [Txt_End_Date becomeFirstResponder]; } else if([Txt_End_Date isFirstResponder]) { [Txt_End_Date resignFirstResponder]; startDate =[Date_Formatter dateFromString:Txt_Start_Date.text]; EndDate =[Date_Formatter dateFromString:Txt_End_Date.text]; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [calendar components:NSDayCalendarUnit fromDate:startDate toDate:EndDate options:0]; Lab_Total_Days.text =[NSString stringWithFormat:@"%ld",components.day]; } }
Dupliqué possible de Comment obtenir le nombre de jours entre Deux dates Objective-C
Dupliqué possible de Comment puis-je comparer deux dates, retourner un nombre de jours