【问题标题】:Day of Week in Month (numeric). The example is for the 1st Wednesday in April月中的星期几(数字)。该示例适用于 4 月的第一个星期三
【发布时间】:2020-04-01 19:26:07
【问题描述】:

您好,我有一个从 http 调用得到的 swift 日期...

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

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

这将返回 4 月 1 日,但我需要将日期格式化为 4 月 1 日星期三

【问题讨论】:

标签: ios swift


【解决方案1】:

为了解决这个问题,我们需要两个格式化程序,一个用于日期,一个 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))"

【讨论】:

  • 月份中的星期几(数字)。该示例适用于 7 月的第二个星期三
  • formatter.dateFormat = "F EEEE MMM" 找到这个但返回 4 月 1 日星期三而不是 4 月 1 日星期三
  • 我编辑了我的问题你告诉我的问题并没有解决我的问题
  • 例如下周我们有 4 月 8 日星期三,对吗?我想要 4 月的第二个星期三
  • sorry 有一种方法可以返回意大利语的日名和月名?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2014-05-10
  • 1970-01-01
  • 2015-06-07
  • 2023-03-21
相关资源
最近更新 更多