Siéntete libre de compartir nuestra web y códigos con otro, necesitamos de tu ayuda para aumentar esta comunidad.
Solución:
NSString *start = @"2010-09-01";
NSString *end = @"2010-12-01";
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitDay
fromDate:startDate
toDate:endDate
options:0];
components
ahora tiene la diferencia.
NSLog(@"%ld", [components day]);
Hay una guía completa para la programación de fecha y hora. Aquí hay una sección relevante que le da una pista sobre qué hacer.
Es de donde proviene el código de ejemplo en la otra pregunta.
Intente escribir algo basado en eso y luego regrese si tiene preguntas específicas.
Editar
Bueno. Así es como escribiría el código en su forma más básica.
Primero, extendería NSDate.
El archivo de cabecera:
// NSDate+ADNExtensions.h
#import
@interface NSDate (ADNExtensions)
- (NSInteger)numberOfDaysUntil:(NSDate *)aDate;
@end
El archivo de implementación:
// NSDate+ADNExtensions.m
#import "NSDate+ADNExtensions.h"
@implementation NSDate (ADNExtensions)
- (NSInteger)numberOfDaysUntil:(NSDate *)aDate
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit fromDate:self toDate:aDate options:0];
return [components day];
@end
Este es un código muy tosco. No hay error al comprobar o validar que la segunda fecha sea posterior a la primera.
Y luego lo usaría así (ejecutándose en un entorno de recolección de basura de 64 bits):
NSDate *startDate = [NSDate dateWithString:@"2010-11-01 00:00:00 +0000"];
NSDate *endDate = [NSDate dateWithString:@"2010-11-02 00:00:00 +0000"];
NSInteger difference = [startDate numberOfDaysUntil:endDate];
NSLog(@"Diff = %ld", difference);
Es una lástima, porque habría aprendido mucho más publicando su código y los resultados incorrectos y obteniendo ayuda más específica. Pero si solo quieres ser un programador de cortar y pegar; toma este código y buena suerte para ti.
Implementación Swift 4
Llamada al método:
let numberOfDays = daysBetweenDates(startDate: fileCreatedDate,endDate: date)
Implementación del método:
func daysBetweenDates(startDate: Date, endDate: Date) -> Int
let daysBetween = Calendar.current.dateComponents([.day], from: startDate, to: endDate)
print(daysBetween.day!)
return daysBetween.day!
Implementación del objetivo C:
Llamada de método:
int numberOfDaysSinceFileCreation = [self daysBetweenDates: fileCreatedDate
currentDate: today];
Implementación del método:
- (int) daysBetweenDates: (NSDate *)startDate currentDate: (NSDate *)endDate
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponent = [calendar components:NSCalendarUnitDay fromDate:startDate toDate:endDate options:0];
int totalDays = (int)dateComponent.day;
return totalDays;
valoraciones y reseñas
Nos encantaría que puedieras recomendar esta sección si te fue de ayuda.