无法在 Swift 中将日期转换为特定格式

Posted

技术标签:

【中文标题】无法在 Swift 中将日期转换为特定格式【英文标题】:Unable to convert date to particular format in Swift 【发布时间】:2021-07-14 14:11:17 【问题描述】:

我正在从服务器获取一些日期字符串,例如“2021-06-25”

如果是今天或昨天,我必须显示为 TodayYesterday。 否则我必须出示 2021 年 6 月 25 日 对于今天和昨天的日期,它工作正常。

但是,如果是前一天,它会显示 2021 年 6 月 25 日

如何显示2021 年 6 月 21 日

static func getDay(_ nowDay: String) -> String 
        
        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 ""
    

有什么建议吗?

【问题讨论】:

您应该始终在设置日期样式或格式之前设置语言环境 【参考方案1】:

如果您想要月份的全名,请使用.long 而不是.medium 作为日期样式:

relativeDateFormatter.dateStyle = .long

还请注意,您可以使用ISO8601DateFormatter 来解析nowDay,因为它是ISO-8601 格式:

let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withFullDate]
let journalDate = dateFormatter.date(from: nowDay)

【讨论】:

完美!!谢谢

以上是关于无法在 Swift 中将日期转换为特定格式的主要内容,如果未能解决你的问题,请参考以下文章

在R中将日期转换为特定格式的字符

如何在swift(ios)中将字符串格式的日期转换为另一种字符串格式[重复]

在linux中将特定日期格式转换为Epoch

在swift 3中将字符串转换为日期类型[重复]

在 Swift 中将字符串转换为日期 [重复]

在 SQL(Redshift)中将字符串(43677)转换为日期格式 [关闭]