Как в Swift получить «последнее воскресенье месяца перед текущей датой»? ⇐ 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?
Я хочу найти «последнее воскресенье месяца перед текущей датой» в 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?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение