Swift 日历,工作日从星期一开始,而不是星期日

问题描述 投票:0回答:3

伙计们,我正在按照教程使用 SwiftUI 在我的应用程序中显示日历

一切正常,但我需要: 显示从星期一开始的星期名称,而不是从星期日开始的星期名称 并根据一周的第一天更改该日期

目前我已经做到了这一点,我怎样才能实现我的目标?

private extension Calendar {
    
        func generateDates(for interval: DateInterval, matching components: DateComponents) -> [Date] {
            var dates = [interval.start]
            enumerateDates(startingAfter: interval.start, matching: components, matchingPolicy: .nextTime) { result, _, stop in
                guard let date = result else { return }
                guard date < interval.end else {
                    stop = true
                    return
                }
                dates.append(date)
            }
            return dates
        }
        
        func generateDays(for interval: DateInterval) -> [Date] {
            generateDates(for: interval, matching: dateComponents([.hour, .minute, .second], from: interval.start))
        }
    }

    func makeDays() -> [Date] {
            guard let firstWeek = calendar.dateInterval(of: .weekOfMonth, for: selectedDate),
                  let lastWeek = calendar.dateInterval(of: .weekOfMonth, for: firstWeek.end - 1) else { return [] }
            let interval = DateInterval(start: firstWeek.start, end: lastWeek.end)
            return calendar.generateDays(for: interval)
        }
ios swift calendar
3个回答
10
投票

创建自定义公历并将第一个工作日设置为星期一

var customCalendar = Calendar(identifier: .gregorian)
customCalendar.firstWeekday = 2

0
投票

也许是 Jayesh Patels 答案的补充;我和

Calendar.current
一起去了:

var customCalendar = Calendar.current
customCalendar.firstWeekday = 2
当我使用初始化器时,

.weekdaySymbols
对我来说是缩写(Mon, Tue)而不是(Monday, Tuesday)。我想您会使用
Calendar.current
来采用多种设置。需要了解并选择合适的有用的东西。


-2
投票

创建一个列表并交替显示本周的数字:

return [0,7,1,2,3,4,5,6][Calendar.current.component(.weekday, from: Date())]
// Monday -> 1
// ...
// Sunday -> 7
© www.soinside.com 2019 - 2024. All rights reserved.