0

I am working on iOS Swift project. I am getting date string from server, But I have to show it whether its today or yesterday else date only.

So, I am doing timeIntervalSinceNow property and trying following.

static func getDay(_ nowDay: String) -> String {
    
    let dateString = "2021-02-09"

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let journalDate = dateFormatter.date(from: dateString)!

    let diff: TimeInterval = (journalDate.timeIntervalSinceNow ?? 0.0) * -1.0
    if diff < 1 {
        return "Today"
    } else if diff < 2 {
        return "Yesterday"
    } else {
        return nowDay
    }
    return nowDay
}

But, It is returning only date and not converting to Today or Yesterday.

Any suggestions?

1 Answers1

1

I have fixed my issue by following

 static func getDay(_ nowDay: String) -> String {
        
            let dateString = "2021-02-09"

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        let journalDate = dateFormatter.date(from: nowDay)
        
        if let convertedDate = journalDate {
            let relativeDateFormatter = DateFormatter()
            relativeDateFormatter.timeStyle = .none
            relativeDateFormatter.dateStyle = .medium
            relativeDateFormatter.locale = Locale(identifier: "en_GB")
            relativeDateFormatter.doesRelativeDateFormatting = true
            let inputFormatter = DateFormatter()
            inputFormatter.dateFormat = "yyyy-MM-dd"
            return relativeDateFormatter.string(from: convertedDate)
        }
        return ""
    }
  • You need to clean this up a bit, you have a local constant that is never used and at the end you create another DateFormatter object that is again never used. – Joakim Danielson Feb 09 '21 at 07:46