代码之家  ›  专栏  ›  技术社区  ›  Farcaller

获取本周的第一天和最后一天

  •  2
  • Farcaller  · 技术社区  · 16 年前

    我尝试过使用NSCalendar、NSDate和NSDateComponents,但似乎我不能只查看日历的第一个工作日,因为可能会有几周和上个月/下个月的几天。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Michael Dillon    16 年前

    使用NSDateComponents获取工作日,从1到7表示周日。

    检查 documentation for details

        2
  •  0
  •   Farcaller    16 年前

    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)