【问题标题】:How to format DateComponents as a partial date string?如何将 DateComponents 格式化为部分日期字符串?
【发布时间】:2021-12-01 14:55:40
【问题描述】:

我有一个包含月份和年份的 DateComponents 对象,我想从中获取格式为“2021 年 3 月”的字符串。我已经尝试过DateComponentsFormatter,但没有一个属性接近我想看到的。

let components = DateComponents(calendar: .current, timeZone: .current, year: 2021, month: 3, day: nil)
let formatter = DateComponentsFormatter()
let string = formatter.string(from: components) // Optional("2,021y 3mo")

请问DateComponents可以这样做吗?

【问题讨论】:

  • DateComponentsFormatter 通常将您的日期时间格式化为时间量。你必须使用DateFormatter

标签: swift nsdatecomponents nsdatecomponentsformatter


【解决方案1】:
let date = Calendar.current.date(from: DateComponents())
var formatter = DateFormatter()
formatter.dateFormat = "MMMM yyyy"
print(formatter.string(from: date))

这差不多就是你需要做的事情

let components = DateComponents(calendar: .current, timeZone: .current, year: 2021, month: 3, day: nil)
let date = calendar.current.date(from: components)
let formatter = DateFormatter()
formatter.dateFormat = "MMMM yyyy"
let string = formatter.string(from: date)

https://nsdateformatter.com/ 在这里您可以看到如何以不同方式格式化日期。

【讨论】:

  • 感谢您的快速回复。所以我总是必须将其转换为Date 然后格式化?因为转换为 Date 会添加额外的信息(如月份中的哪一天)。但本质上我只是不显示那部分?
  • 是的。通过在 dateFormat 中说 MMMM yyyy,您声明您只关心月份名称和全年
猜你喜欢
  • 2015-04-04
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
相关资源
最近更新 更多