I’m trying to get the days since in PST but I’m receiving the following 0001-01-01 07:52:58 +0000 when calling the method. The method is an extension on Date and the incoming date is the same format 2022-08-07 08:32:57 +0000. Not sure where the error is.
func daysInPST() -> Int {
var components = DateComponents()
components.timeZone = TimeZone(abbreviation: "PST")
let currentDateInPST = Calendar.current.date(from: components)
let days = Calendar.current.dateComponents([.day], from: self, to: currentDateInPST!)
return days.day!
}
>Solution :
Calendar.current.date(from: DateComponents()) returns Januar 1st in year 1 because all properties are empty (nil).
If you want to get the days from self to the current date in PST create a custom calendar and set its time zone accordingly
extension Date {
func daysInPST() -> Int {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "PST")!
return calendar.dateComponents([.day], from: self, to: .now).day!
}
}