'Getting correct date from FSCalendar
I have been looking around a lot but found no real solution to this one.
I use FSCalendar
and didSelectDate
is giving the wrong date.
The only fix for this that I've found is using this code that I'm using right now:
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
let newDate = date.addingTimeInterval(TimeInterval(TimeZone.current.secondsFromGMT(for: date)))
currentDateVc = newDate
}
This means if I choose the 22th in February I get "2022/02/22 - 00:00:00"
, here is the issue, I get the correct day but not time. And in my app I need the correct time as well. Is there anyway I can fix this? Maybe with CalendarComponents
for time from Date()
?
Solution 1:[1]
You'll need to compose the date from FSCalendar
and the current datetime
to make a new Date
. One way to do this:
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
let now = Date()
let cal = Calendar.current
let newDate = cal.date(bySettingHour: cal.component(.hour, from: now),
minute: cal.component(.minute, from: now),
second: cal.component(.second, from: now),
of: date)!
currentDateVc = newDate
}
Side note: It's better to use features of the calendar/datetime library to get your local time instead of adding seconds from GMT to your date time data. You'll avoid mysterious errors in the future.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |