سؤال

ولدي البرمجية التالية:

NSDate *dateNow = [[NSDate alloc] init];
NSTimeInterval timeDifference = [usersDate timeIntervalSinceDate:dateNow];
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];

// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:timeDifference sinceDate:date1]; 

// Get conversion to months, days, hours, minutes
unsigned int unitFlags = NSWeekCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSSecondCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1  toDate:date2  options:0];

NSLog(@"Break down: %d Years, %d months, %d Weeks, %d days %d Hours, %d Minutes, %d Seconds", [breakdownInfo year], [breakdownInfo month], [breakdownInfo week], [breakdownInfo day], [breakdownInfo hour], [breakdownInfo minute], [breakdownInfo second]);

وويطبع الإخراج مثل:

Break down: 0 Years, 5 months, 3 Weeks, 4 days 2 Hours, 48 Minutes, 20 Seconds

وأنا في الواقع لا تحتاج إلى عدة أشهر حتى الآن، ولكن مجموع عدد أسابيع، هناك على أية حال أنا يمكن تعديل التعليمات البرمجية للقيام بذلك؟ أنا لا أريد أن تفترض ببساطة أن 1 شهر = 4 اسابيع وهذا من شأنه أن يكون أوندووبتبلي الخطأ.

وبالنسبة لنوع

هل كانت مفيدة؟

المحلول

ولا يعمل لمجرد استخدام:

unsigned int unitFlags = NSWeekCalendarUnit;

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top