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)")
我正在开发健身应用程序,用户可以在其中选择他想锻炼的日子。
当他打开应用程序时,我想向他展示当前的一周,他可以在其中观察他的训练课程安排的日期。
如果他来自美国,我想从周日开始给他看一周。对于欧盟用户,它应该从星期一开始。
有没有什么方法可以根据用户的 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)")