سؤال

كيف يمكنني حساب عدد التقويمأسابيع في الهدف-ج لسنة معينة.

حاولت:

[calendar rangeOfUnit:NSWeekOfYearCalendarUnit inUnit: NSYearCalendarUnit forDate: [NSDate date]].length

لكنه يعود 54.

شكرا

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

المحلول

أنت تستخدم NSWeekOfYearCalendarUnit, ، لذلك يجب عليك استخدام الوحدة الأكبر المقابلة وهي NSYearForWeekOfYearCalendarUnit.

NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.firstWeekday = 2;
calendar.minimumDaysInFirstWeek = 4;
int n = [calendar rangeOfUnit:NSWeekOfYearCalendarUnit inUnit:NSYearForWeekOfYearCalendarUnit forDate: [NSDate date]].length;
NSLog(@"%d", n); // 52

أخيرا ، لاحظ أن كلاهما NSWeekOfYearCalendarUnit و NSYearForWeekOfYearCalendarUnit هي دائرة الرقابة الداخلية 5.0 ونظام التشغيل العاشر 10.7 فقط.

تحرير

إذا كنت تستخدم تاريخا في أسبوع تقويمي من العام السابق أو العام التالي مثل 1/1/2016 ، فسيحسب هذا عدد الأسابيع في ذلك العام (2015 في المثال) ، وليس السنة الفعلية للتاريخ (2016 في المثال).إذا لم يكن هذا ما تريده ، فيمكنك تغيير التاريخ كما يلي:

NSDateComponents *components = [calendar components:NSYearCalendarUnit fromDate:date];
components.month = 3;
date = [calendar dateFromComponents:components];

نصائح أخرى

بعد كمية كبيرة من الاختبار، إليك وظيفة ستعودها لأي عام:

giveacodicetagpre.

أساسا، لكل المواصفات، فإن العدد الإجمالي للأسابيع هو نفس العدد الإجمالي لليوم الخميس في السنة، وهو ما يحسب.

قد اختبرتها في دورة 400 عام بأكملها (بدءا من العام 0 وعاملي 2000) وجميع الحالات تطابق المواصفات.

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