Swift/SwiftUI:week/date 管理 swift

Swift/SwiftUI: week/date management in swift

我正在开发健身应用程序,用户可以在其中选择他想锻炼的日子。

当他打开应用程序时,我想向他展示当前的一周,他可以在其中观察他的训练课程安排的日期。

如果他来自美国,我想从周日开始给他看一周。对于欧盟用户,它应该从星期一开始。

有没有什么方法可以根据用户的 location/geo 获取 "current" 周的日期?在适当的位置考虑一周从哪一天开始。

我试图为您的问题找到解决方案。我认为这应该有效:

// Define a function that returns the following seven dates, given a start date
func getWeekDates(of startDate: Date, with calender: Calendar) -> [Date] {
    var weekDates: [Date] = []
    for i in 0..<7 {
        weekDates.append(calendar.date(byAdding: .day, value: i, to: startDate)!)
    }
    return weekDates
}

// This should automatically take the right calendar for the user's locale
// If you want to specify the day weeks start with manually, choose .gregorian or .iso8601:
// .gregorian starts on Sunday, .iso8601 starts on Monday
let calendar = Calendar.current

let startOfCurrentWeek = calendar.date(from: calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: Date()))

let currentWeekDates = getWeekDates(of: startOfCurrentWeek!, with: calendar)

希望对您有所帮助。

使用

Calendar.current.firstWeekday

如果returns1,则星期日是一周的第一天

如果是returns2,那么周一就是一周的第一天。

您可以通过手动设置语言环境来测试

var calendar = Calendar.current

calendar.locale = Locale(identifier: "en_GB")
print("\(calendar.locale!) starts on day \(calendar.firstWeekday)")
// en_GB starts on day 2

calendar.locale = Locale(identifier: "en_US")
print("\(calendar.locale!) starts on day \(calendar.firstWeekday)")