Buscamos por el mundo on line para así tener para ti la respuesta para tu inquietud, en caso de alguna pregunta déjanos la duda y te contestamos porque estamos para servirte.
Solución:
Para obtener los días de la semana de la semana, es:
let calendar = Calendar.current
let today = calendar.startOfDay(for: Date())
let dayOfWeek = calendar.component(.weekday, from: today)
let weekdays = calendar.range(of: .weekday, in: .weekOfYear, for: today)!
let days = (weekdays.lowerBound ..< weekdays.upperBound)
.compactMap calendar.date(byAdding: .day, value: $0 - dayOfWeek, to: today) // use `flatMap` in Xcode versions before 9.3
.filter !calendar.isDateInWeekend($0)
Para mostrar eso como "Jueves = 82", es
let formatter = DateFormatter()
formatter.dateFormat = "eeee' = 'D"
for date in days
print(formatter.string(from: date))
O
let strings = days.map formatter.string(from: $0)
Tuve problemas para adaptar la solución de Rob para cuando la semana comienza el lunes. Esta solución se adapta a su calendar.firstWeekday
ajuste.
var calendar = Calendar.autoupdatingCurrent
calendar.firstWeekday = 2 // Start on Monday (or 1 for Sunday)
let today = calendar.startOfDay(for: Date())
var week = [Date]()
if let weekInterval = calendar.dateInterval(of: .weekOfYear, for: today)
for i in 0...6
if let day = calendar.date(byAdding: .day, value: i, to: weekInterval.start)
week += [day]
return week
Hice una pequeña extensión en Calendar, que podría ser útil para cualquier otra persona que busque una solución más funcional para esto.
import Foundation
extension Calendar
func intervalOfWeek(for date: Date) -> DateInterval?
dateInterval(of: .weekOfYear, for: date)
func startOfWeek(for date: Date) -> Date?
intervalOfWeek(for: date)?.start
func daysWithSameWeekOfYear(as date: Date) -> [Date]
guard let startOfWeek = startOfWeek(for: date) else
return []
return (0 ... 6).reduce(into: []) result, daysToAdd in
result.append(Calendar.current.date(byAdding: .day, value: daysToAdd, to: startOfWeek))
.compactMap $0
Tienes la posibilidad mostrar este enunciado si te fue útil.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)