0

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?

Parth
  • 2,682
  • 1
  • 20
  • 39

0 Answers0