سؤال

لدي مشكلة التالية: أحتاج إلى إنشاء nsmutabearray مع كل يوم من أيام الأسبوع بعد تاريخ محدد.

هذا يجب أن يبدو:

  • الخميس 28 أكتوبر 2010
  • الخميس 04 أكتوبر 2010
  • الخميس 11 أكتوبر 2010
  • ...

كيف أقوم بذلك؟ أعتقد أن الأمر يتعلق بـ NSCALENDAR ، لكن لا يمكنني العثور على الحل الصحيح ... هل يمكنك مساعدتي؟

شكرا لكم مقدما

ffraenz

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

المحلول

هذه سلسلة لا حصر لها. يمكن لـ NSMutableArray أن يحمل مجموعة محدودة فقط.

على أي حال ، تحتاج فقط إلى عضو واحد من السلسلة ، مثل 2010-10-28. للحصول على الخميس بعد ذلك ، أضف أسبوعًا واحدًا. للحصول على الموعد الثالث في السلسلة ، أضف أسبوعًا إلى التاريخ الثاني ، أو أسبوعين إلى التاريخ الأول. يوفر لك وجود أي عضو في السلسلة الوصول إلى أي عضو آخر في السلسلة.

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

نصائح أخرى

للحصول على تاريخ حقيقي:

NSDate *today = [[NSDate alloc] init];

لإضافة أسبوع:

NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];

ثم يمكنك التكرار وإنشاء صفيفك:

NSMutableArray* dates = [[NSMutableArray alloc] init];
NSDate *date= [[NSDate alloc] init];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setWeek:1];

for (int i=0;i<10;i++) {
  NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate:date options:0];
  [dates addObject:date];
  [date release];
  date = nextDate;
}
[date release];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top