İki NSDate nesnesi arasındaki fark-sonuç da bir NSDate

iki NSDate nesnem var ve ikisi ile sonuç arasındaki farkın tekrar bir NSDate nesnesi olmasını istiyorum. Bunu nasıl başaracağınıza dair bir fikrin var mı?

burada, geçen zamanı bulmak ve daha sonra geçen zamanı yerelleştirmek zorunda olduğum benzersiz bir soruna hitap etmeye çalışıyorum. NSDate nesnesinde geçen sürem varsa onu yerelleştirebilirim. Yani, iki tarih arasındaki zaman aralığı ile aynı zaman bileşenine sahip bir NSDate nesnesi oluşturmayı düşündüm, böylece Nsdateformatter'ı yerelleştirmek için kullanabilir.

53
tarihinde sordu Abhinav 2011-04-06 11:04:23
kaynak

5 ответов

NSDate zamanında bir örneği temsil eder, bu nedenle aralığını zaman NSDate olarak temsil etmek mantıklı değildir . Ne istiyorsun NSDateComponents :

NSDate *dateA;
NSDate *dateB;

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay
                                           fromDate:dateA
                                             toDate:dateB
                                            options:0];

NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
151
cevap Nick Forge 2016-10-07 05:46:51
kaynak

eğer 05/05/2002 12/12/2001 çıkarırsanız tarih ne olacak? İki tarih arasındaki kronolojik mesafe bir tarih olamaz, her zaman bir çeşit aralıktır. Aralığı hesaplamak için timeİntervalSinceDate: kullanabilirsiniz.

yerelleştirmek için aşağıdaki adımları deneyebilirsiniz:

18
cevap Nick Weaver 2017-05-23 14:45:29
kaynak

dan NSDate sınıf başvurusu, bunları yapmak için örnek yöntemleriniz var -

  1. iki NSDate değişkeni nasıl karşılaştırılır? Ans: isEqualToDate:
  2. iki NSDate değişkeni arasındaki farkı nasıl bulabilirim? Ans: timeIntervalSinceDate:
  3. NSDate değişkeninden dakika, saat ve günlerin her ayrı değerini nasıl alabilirim? bağlantılar
7
cevap Jhaliya 2011-04-06 11:11:36
kaynak

NSDate 'in timeIntervalSinceDate: kullanarak iki tarih arasındaki zaman aralığını hesaplayabilirsiniz, ancak bir zaman aralığını bir tarih olarak temsil etmeniz mantıklı değildir.

4
cevap Chris Doble 2011-04-06 11:10:19
kaynak

kullanarak kolay bir yol var-karşılaştırın: NSDate:

NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100];
NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200];
NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150];
NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil];
NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)];
if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]])
    NSLog(@"myDatea between dateA and dateB");
3
cevap neal 2012-07-08 18:24:48
kaynak