swift - 如何获得特定的日期格式?

标签 swift date dateformatter

我尝试制作 rss 阅读器,得到的日期格式如下:2019-08-15 13:10:13 +0000,但我想以如下格式显示我的日期 -> 就在最近、今天、昨天和周五,7 月 31 日、2019 等。我知道如何从日期格式化程序中为全天制作一种格式,但如何获得不同的格式?

extension Formatter {

    static let iso8601: DateFormatter = {
        let formatter = DateFormatter()
        formatter.calendar = Calendar(identifier: .iso8601)
        formatter.timeZone = TimeZone(secondsFromGMT: 0)
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
        return formatter
    }()

}

extension Date {

    var iso8601: String {
        return Formatter.iso8601.string(from: self)
    }

   static let dayMonthYearTimeDateFormatter: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = TimeZone.autoupdatingCurrent
        dateFormatter.dateFormat = "dd MMMM yyyy, HH:mm" 2018, 12:30"
        return dateFormatter
    }()

}

最佳答案

您没有分享您的模型,因此我将假设您的 RSS 阅读器“新闻”项目类似于:

struct NewsItem {
    let date: Date
}

其中日期是新闻发布的日期。

您可能会考虑创建和使用 Calendar 对象,因为它旨在进行日历计算。例如

let calendar = formatter.calendar
let newsItem = // ...some previously initialized NewsItem

if calendar.isDateInYesterday(newsItem.date) == true {
    // ...code to appropriately assign a string “Yesterday” to wherever you’d like
}

关于swift - 如何获得特定的日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57512879/

相关文章:

ios - 如何仅针对 iOS 9 用户安全地将 `Watch Connectivity` 与仍以 iOS7 作为最低开发目标的应用程序集成?

python - 类型错误 : unbound method Date() must be called with DateTime instance as first argument (got int instance instead)

java - 如何将日期转换为字符串并再次日期?

swift - DateFormatter 中的内存泄漏

swift - 在 Swift 中从单个 tableview 创建两个 segue

objective-c - 快速将图像从 View Controller 传递到 UIview

ios - Bundle.main.path(forResource :ofType:inDirectory:) returns nil when directory and filename are correct

javascript - 将日期字符串转换为数组

DateFormatter 中的 Swift 语言错误?