I am using date formatter to convert timestamp to a date string and also using the same formatter to get a date back from the date string. The conversion from timestamp to date string is working properly. But when creating a date from date string, I am getting the same wrong date.
func getDateFormatter() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .current
dateFormatter.dateFormat = "dd MMM YYYY"
return dateFormatter
}
func getDate(from dateString: String) -> Date? {
print("Date String: ", dateString)
let dateFormatter = getDateFormatter()
return dateFormatter.date(from: dateString) ?? nil
}
func getDateString(from timestamp: Double) -> String {
let dateFormatter = getDateFormatter()
let date = Date(timeIntervalSince1970: timestamp)
let dateString = dateFormatter.string(from: date)
return dateString
}
func getDateStringForHeaderText(dateString: String) -> String {
guard let date = getDate(from: dateString) else {
print("Could not get date for generting header string")
return dateString
}
print("Date: ", date)
if Calendar.current.isDateInToday(date) { return "Today"}
if Calendar.current.isDateInYesterday(date) {return "Yesterday"}
return dateString
}
When getDateStringForHeaderText
is called for 2 different date strings I am getting the same wrong date.
Date String: 14 Jan 2021
Date: 2020-12-19 18:30:00 +0000
Date String: 15 Jan 2021
Date: 2020-12-19 18:30:00 +0000
Some places mention not to set the time zone as .current is used by default. The timestamp used to generate these dates was saved using NSDate().timeIntervalSince1970
. But I feel since I have chopped off the time component from the date string, the timezone should not matter much. What am I missing?