العمل مع NSCALENDAR - الحصول على يوم الثلاثاء القادم من الشهر
-
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];
للحصول على عينات ومعلومات التفاصيل انظر هذا يرشد