#ios #swift #uidatepicker
#iOS #swift #uidatepicker
Вопрос:
Я использую библиотеку для отображения календаря, я хотел бы, чтобы неделя начиналась в понедельник, а календарь отображался с текущей даты на 2017 год
https://github.com/miraan/CalendarDateRangePickerViewController
изменил локаль на русский язык, но не помогло
func getMonthLabel(date: Date) -> String {
var dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "ru_RU")
dateFormatter.dateFormat = "MMMM yyyy"
return dateFormatter.string(from: date)
}
func getWeekdayLabel(weekday: Int) -> String {
var components = DateComponents()
components.calendar = Calendar.current
components.weekday = weekday
let date = Calendar.current.nextDate(after: Date(), matching: components, matchingPolicy: Calendar.MatchingPolicy.strict)
if date == nil {
return "E"
}
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "ru_RU")
dateFormatter.dateFormat = "EEEEE"
return dateFormatter.string(from: date!)
}
Комментарии:
1. Опубликуйте код в виде текста, а не изображения, и объясните, в чем проблема с вашим кодом
2. По какой-то причине в календаре неделя начинается в воскресенье, и я хотел бы начать в понедельник с локалем ru_RU. А также проблемы с отображением дат. Я хочу получить календарь с текущей даты на предыдущие годы
3. Почему бы вам тогда не установить
.locale
ofCalendar
?4. Единственный календарь, первым днем недели в котором является понедельник, — это календарь iso8601
5. Не работает — слишком расплывчато. Почему вы используете фиксированную локаль? Вы должны отображать название дня недели с учетом языка пользовательского устройства и настроек.
Ответ №1:
Проблема была в этой части кода, исправили на 2 и удалось получить желаемый результат.
override public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellReuseIdentifier, for: indexPath) as! CalendarDateRangePickerCell
cell.reset()
let blankItems = getWeekday(date: getFirstDateForSection(section: indexPath.section)) - 1
if indexPath.item < 7 {
cell.label.text = getWeekdayLabel(weekday: indexPath.item ** 2** )
} else if indexPath.item < 7 blankItems {
cell.label.text = ""