无法在 Swift 中使用日期格式化程序将日期转换为今天或昨天

问题描述

我正在研究 iOS Swift 项目。我正在从服务器获取日期字符串,但我必须仅显示它是今天还是昨天或其他日期。

所以,我正在处理 timeIntervalSinceNow 属性并尝试关注。

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
}

但是,它只返回日期,而不是转换为今天或昨天。

有什么建议吗?

解决方法

我已通过以下方式解决了我的问题

 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 ""
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...