J'ai deux dates, date1 et date2 et je souhaite des jours entre date1 et date 2
Exemple: p> la sortie attendue p> [TUE, WEB THR, VEN] P>
blockQuote> p>
3 Réponses :
Essayez ceci -
func getWeekdays(dateOne firstDateStr: String, dateTwo secondDateStr: String) -> [String] { let dateformatter = DateFormatter() dateformatter.dateFormat = "dd-MMM-yyyy" guard let firstDate = dateformatter.date(from: firstDateStr), let secondDate = dateformatter.date(from: secondDateStr) else { return [] } let calendar = Calendar.current let numberOfDays: Int if firstDate > secondDate { numberOfDays = (calendar.dateComponents([.day], from: secondDate, to: firstDate).day ?? 0) } else { numberOfDays = (calendar.dateComponents([.day], from: firstDate, to: secondDate).day ?? 0) } dateformatter.dateFormat = "EEE" let days = (0...numberOfDays).compactMap { day -> String? in if let date = calendar.date(byAdding: .day, value: day, to: firstDate) { return dateformatter.string(from: date) } return nil } print(days) return days }
NE PAS HARDCODEZ vos propres noms de semaine. Obtenez les noms à l'aide d'un DateFormatter code> ou à l'aide des différentes propriétés du nom de la semaine à partir du calendrier code>.
Le code suivant vous donne les jours entre deux dates et devriez prendre en compte des scandales avec le calendrier.
let calendar = Calendar.current let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd-MMM-yyyy" let dayFormatter = DateFormatter() dayFormatter.dateFormat = "EEE" let dateFrom = dateFormatter.date(from: "28-May-2019")! let dateTo = dateFormatter.date(from: "31-May-2019")! var days: [String] = [] var date = dateFrom while date <= dateTo { let day = dayFormatter.string(from: date) days.append(day) date = calendar.date(byAdding: .day, value: 1, to: date)! } print(days)
let date1Str = "28-May-2019" let date2Str = "31-May-2019" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy" dateFormatter.locale = Locale(identifier: "en_US") var date1 = dateFormatter.date(from:date1Str)! var date2 = dateFormatter.date(from:date2Str)! let dayFormatter = DateFormatter() dayFormatter.dateFormat = "EEE" while date1 <= date2 { let dayInWeek = dayFormatter.string(from: date1) print(dayInWeek) date1 = Calendar.current.date(byAdding: .day, value: 1, to: date1)! }
Stackoverflow.com/questions/32536612 / ... Convertissez ensuite les thèses «Date» des objets dans une représentation de chaîne souhaitée.