العمل مع NSCALENDAR - الحصول على يوم الثلاثاء القادم من الشهر

StackOverflow https://stackoverflow.com/questions/2516315

  •  22-09-2019
  •  | 
  •  

سؤال

هذا أمر غريب بعض الشيء ، ولكن هل من الممكن استخدام nscalendar (أو أي مكون ، لهذه المسألة) لمعرفة تاريخ "الثلاثاء الأول من الشهر" التالي؟

على سبيل المثال ، اليوم هو يوم الخميس 25 مارس 2010. سيكون "يوم الثلاثاء الأول من الشهر" المقبل في 6 أبريل في 6 أبريل.

كيف يمكنك أن تفعل هذا؟

شكرا جزيلا!!!!!

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

المحلول

يحسب الرمز أدناه أول يوم الثلاثاء من مجموعة شهر/سنة معينة. إنه مكتوب في ماكروبي لأن هذا هو ما جربته للتو ، لكن لا ينبغي أن تواجه أي مشاكل لتحويله إلى Objective-C المناسبة ، إنه مجرد بناء جملة مختلف (أحب Macruby لتجربة فكرة بسرعة):

dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4

dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month

cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"

أترك الأمر لك لتحديد "الثلاثاء الأول التالي" من تاريخ معين: قم بحساب شهر التاريخ الحالي أولاً وإذا كانت النتيجة في الماضي ، فقم بذلك مرة أخرى للشهر التالي. يستخدم -[NSCalendar components:fromDate:] للحصول على التحرير والسرد الشهر/اليوم من nsdate معين.

نصائح أخرى

لسوء الحظ ، لا يمكنني التحقق من عجز هذا الرمز ، ولكن يجب أن يبدو البعض هكذا:

NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];

للحصول على عينات ومعلومات التفاصيل انظر هذا يرشد

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