現在の週の最初と最後の日を取得するにはどうすればよいですか? 私が必要としているのは、NSDate プロパティを使用して一連のオブジェクトをフィルター処理して、現在の週に表示されるオブジェクトのみを残し、それらを日ごとにフィルター処理する方法です。また、ローカライズされた曜日名を取得する方法が必要です。
NSCalendar、NSDate、および NSDateComponents で遊んでみましたが、カレンダーの firstWeekday をチェックするだけではないようです。
現在の週の最初と最後の日を取得するにはどうすればよいですか? 私が必要としているのは、NSDate プロパティを使用して一連のオブジェクトをフィルター処理して、現在の週に表示されるオブジェクトのみを残し、それらを日ごとにフィルター処理する方法です。また、ローカライズされた曜日名を取得する方法が必要です。
NSCalendar、NSDate、および NSDateComponents で遊んでみましたが、カレンダーの firstWeekday をチェックするだけではないようです。
NSDateComponents を使用して、日曜日の 1 から 7 までの曜日を取得します。
曜日番号を取得したら、それと週の最初の曜日との差を計算します。たとえば、月曜日 (2) が最初の日であると考える場合、それは何日前でしたか (またはそうでしたか)。平日が 4 (水) の場合、差は 2 です。つまり、元の日付から 2 日を引くと、その週の最初の曜日が得られます。
これらのオブジェクトには時間属性も含まれているという事実に対処する必要があるため、詳細についてはドキュメントを確認してください。可能であれば、日付と日付の比較のみに関心がある場合は、時刻の値が常にゼロであることを確認してください。
さて、ここに行きます、仕事をするPythonスニペット
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)