これは今日の日付に基づいて今週のすべての日付を取得するためにオンラインで見つかったコードです。たとえば、木曜日の9月1日の2016年ののような日付の場合は、木曜日のから週が始まり、水曜日の9月7日の2016で週を終了します。これは本当に私を悩ましています。その理由は、日付が月末である場合です。 日曜日7月31日2016月曜日から始まり、日曜日、で終了します。これは、私が欲しいものです。日付が月の始まりである場合、今週のすべての日付を返す
これは重複しているかもしれませんが、似たような質問をしているうちに私はまだ過ごしました。
編集: は、現在の日付に基づいて、現在の週のすべての日付を返す方法はあります(そして、あなたは同様に、来週時間があれば?)
func formatDate(date: NSDate) -> String {
let format = "EEEE MMMM dd yyyy"
let formatter = NSDateFormatter()
formatter.dateFormat = format
return formatter.stringFromDate(date)
}
// =======================================================================//
// THIS WEEK DATES //
// =======================================================================//
func formattedDaysInThisWeek() -> [String] {
// create calendar
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
// today's date
let today = NSDate()
let todayComponent = calendar.components([.Day, .Month, .Year], fromDate: today)
let components = calendar.components([.Weekday], fromDate: today)
// range of dates in this week
let thisWeekDateRange = calendar.rangeOfUnit(.Day, inUnit:.WeekOfMonth, forDate:today)
// date interval from today to beginning of week
let dayInterval = thisWeekDateRange.location - todayComponent.day
print(thisWeekDateRange.location)
print(todayComponent.day)
// date for beginning day of this week, ie. this week's Sunday's date
if components.weekday == 1 {
print("Is a sunday")
let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: -6, toDate: today, options: .MatchNextTime)
var formattedDays: [String] = []
for i in 0 ..< 7 {
let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
formattedDays.append(formatDate(date))
}
return formattedDays
} else {
print("Not a sunday")
let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: dayInterval, toDate: today, options: .MatchNextTime)
var formattedDays: [String] = []
for i in 1 ..< thisWeekDateRange.length + 1 {
let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
formattedDays.append(formatDate(date))
}
return formattedDays
}
}
これはうまくいきました、ありがとうございます。 –