首页 > 解决方案 > 月中的星期几(数字)。该示例适用于 4 月的第一个星期三

问题描述

嗨,我有一个快速的约会,我从 http 调用中得到...

现在我想将此日期格式化为:4 月 1 日星期三

let formatter = DateFormatter()
formatter.dateFormat = "F EEEE MMM" 
let now = stats.getData()
let dateString = formatter.string(from: now)

这将返回4 月 1 日星期三,但我需要将日期设置为4 月 1 日星期三

标签: iosswift

解决方案


为了解决这个问题,我们需要两个格式化程序,一个用于日期,一个 NumberFormatter 用于将 1 格式化为 1 等。请注意,要获取月份中特定工作日的顺序,我们使用日期组件.weekdayOrdinal

日期模式也需要从 EEEE 更改为 E 以显示缩写的日期名称,月份需要为 MMMM 以显示完整的月份名称

let formatter = DateFormatter()
formatter.dateFormat = "E MMMM"
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .ordinal

let now = stats.getData()
let day = Calendar.current.component(.weekdayOrdinal, from: now)
let ordinalDay = numberFormatter.string(from: NSNumber(value: day)) ?? String(day)

let dateString = "\(ordinalDay) \(formatter.string(from: now))"

推荐阅读