首页 > 解决方案 > 如何在不包括年份的情况下在 Swift 4 中显示日期?

问题描述

使用 DateFormatter Full Style 时如何删除年份。我希望它显示这样的日期,例如:(10 月 4 日,星期四)。不包括年份。

目前我有:

func todaysDate() {
    dateLabel.text = DateFormatter.localizedString(from: NSDate() as Date, dateStyle: DateFormatter.Style.full, timeStyle: DateFormatter.Style.none)
}

标签: swiftdate

解决方案


如果您想要正确本地化但自定义的格式,则需要使用setLocalizedDateFormatFromTemplate.

func todaysDate() {
    let df = DateFormatter()
    df.setLocalizedDateFormatFromTemplate("EEEEMMMMd")
    dateLabel.text = df.string(from: Date())
}

EEEE给出完整的工作日名称。MMMM给出完整的月份名称。d给出月份的日期。

根据用户的语言环境,生成的格式将按照正确的顺序添加适当的标点符号。

另请注意,没有理由使用NSDate.

作为旁注,我会将您的代码重构为更像这样:

func todaysDate() -> String {
    let df = DateFormatter()
    df.setLocalizedDateFormatFromTemplate("EEEEMMMMd")
    return df.string(from: Date())
}

然后是您当前呼叫的位置:

todaysDate()

我会做:

dateLabel.text = todaysDate()

推荐阅读