سؤال

وكيف يمكنني الحصول على الأيام الأولى والأخيرة من الأسبوع الحالي؟ ما احتاج اليه هو وسيلة للتصفية مجموعة من الكائنات مع الملكية NSDate لمغادرة الوحيدة، التي تظهر على الأسبوع الحالي، ومن ثم تصفية لهم من قبل أيام. كما أنني بحاجة إلى طريقة للحصول على أسماء يوم محلية.

ولقد حاولت أن تلعب مع NSCalendar، NSDate وNSDateComponents، ولكن يبدو أنني لا يمكن أن تحقق فقط firstWeekday تقويم، كما قد تكون هناك أسابيع مع أيام من السابق / الشهر المقبل.

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

المحلول 2

وطيب، هنا غني، قصاصة الثعبان التي لا وظيفة

def daySec(diff):
    return 60*60*24*diff

def weekDays(dt=None):
    if not dt:
        dt = NSDate.date() # use today
    cal = NSCalendar.currentCalendar()
    dc = cal.components_fromDate_(NSWeekdayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit, dt)
    normDt = cal.dateFromComponents_(dc) # get the day-rounded date
    shift = dc.weekday() - cal.firstWeekday()
    firstDt = normDt.dateByAddingTimeInterval_(daySec(-shift))
    lastDt = normDt.dateByAddingTimeInterval_(daySec(-shift+7)) # up to next week's first day midnight
    return (firstDt, lastDt)

نصائح أخرى

استخدم NSDateComponents للحصول على أيام الأسبوع، والتي هي من 1 الأحد إلى 7.

وبمجرد الانتهاء من عدد أيام الأسبوع، وحساب الفرق بين ذلك، واليوم الأول من الأسبوع الخاص بك. على سبيل المثال إذا كنت تنظر الاثنين (2) ليكون في اليوم الأول، ثم كم يوما في وقت سابق كان عليه (أو سيكون). إذا كان يوم من أيام الأسبوع هو 4 (الأربعاء) ثم الفرق هو 2. وهذا يعني أنه إذا طرح يومين من الموعد الأصلي، سوف تحصل على اليوم الأول من الأسبوع أنها تقع في.

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

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