Как в Swift получить «последнее воскресенье месяца перед текущей датой»?IOS

Программируем под IOS
Гость
Как в Swift получить «последнее воскресенье месяца перед текущей датой»?

Сообщение Гость »


Я хочу найти «последнее воскресенье месяца перед текущей датой» в Swift, но использование функции Calendar nextDate не работает (всегда возвращает ноль).

var Calendar: Calendar = Calendar(идентификатор: .gregorian) календарь.timeZone = .gmt пусть LastSundayDateComponents: DateComponents = DateComponents( день недели: 1, день неделиПорядковый номер: -1 ) пусть previousLastSundayDate: Дата? = календарь.следующаяДата( после: Дата.сейчас, соответствие: LastSundayDateComponents, matchPolicy: .nextTime, повторенныйTimePolicy: .first, направление: .назад ) print(previousLastSundayDate ?? "Не найдено") // "Не найдено" Если я использую положительный номер дня недели, он работает нормально, и тот же метод nextDate предоставляет правильную дату.

let firstSundayDateComponents: DateComponents = DateComponents( день недели: 1, день неделиПорядковый номер: 1 ) Когда я проверяю, могут ли компоненты даты предоставить действительную дату для данного календаря, он возвращает false...

let LastSundayInNovember2023DateComponents: DateComponents = DateComponents( год: 2023, месяц: 11, день недели: 1, день неделиПорядковый номер: -1 ) // ЭТО ВЕРНЕТ ЛОЖЬ let isValid: Bool = LastSundayInNovember2023DateComponents.isValidDate(in: Calendar) print(isValid) // ложь ... даже если можно создать правильную дату.

let LastSundayInNovember2023: Date = Calendar.date(from: LastSundayInNovember2023DateComponents)! print(lastSundayInNovember2023) // 2023-11-26 00:00:00 +0000 Это ошибка в Foundation?

Вернуться в «IOS»