Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
836 views
in Technique[技术] by (71.8m points)

calendar - Start and end date of next week swift

I need to get date like "31 of January - 6 of February"

I used next code:

let calendar = Calendar(identifier: .gregorian)
let dateFormatter = DateFormatter()
let weekday = 1 
let sundayComponents = DateComponents(calendar: calendar, weekday: weekday)

let nextSunday = calendar.nextDate(after: Date(), matching: sundayComponents, matchingPolicy: .nextTimePreservingSmallerComponents)

I need to take all this period from Monday to Sunday

I need to take all this period from Monday to Sunday

question from:https://stackoverflow.com/questions/65908191/start-and-end-date-of-next-week-swift

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use dateInterval(of:start:interval:for:):

let formatter = DateFormatter()
let calendar: Calendar = .current

let now = Date()
let weekFromNow = calendar.date(byAdding: .weekOfYear, value: 1, to: now)!

var start = weekFromNow
var interval: TimeInterval = 0
guard calendar.dateInterval(of: .weekOfYear, start: &start, interval: &interval, for: weekFromNow) else { return }

let end = calendar.date(byAdding: .day, value: -1, to: start.addingTimeInterval(interval))!
// or let end = start.addingTimeInterval(interval - 1)
// or let end = calendar.date(byAdding: .day, value: 6, to: start)!

print(formatter.string(from: start), "-", formatter.string(from: end)) 

This will honor the “start of week” on your device.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...