在日历 Swift 中更改可见月份
Posted
技术标签:
【中文标题】在日历 Swift 中更改可见月份【英文标题】:Changing visible months in a Calendar Swift 【发布时间】:2021-05-06 13:20:37 【问题描述】:我正在与Calendar
合作,并且我能够在今年获得一些东西,我有 1 月、2 月、3 月、4 月、5 月、6 月、7 月……直到 12 月。但是现在因为我们在五月,我不想看到六月,七月,八月......直到十二月。相反,我希望看到 Jan, feb, march, April, may
并能够向后滚动到可能的 ... Nov, 2020
、Dec, 2020
对于日历的当前实现,我不明白如何选择它。
这是我用来获取当前月份的 private let months = Calendar.current.shortMonthSymbols.map $0.uppercased()
这会导致Jan, feb, march, April, may, June, July ... up to December
如何更改此行为以反映我想要的?
【问题讨论】:
【参考方案1】:在数组上使用一个枚举器,然后使用prefix(while:)
来获取当前月份之前的所有月份。
let thisMonth = Calendar.current component(.month, from: Date())
let currentYearMonths = Calendar.current.shortMonthSymbols.enumerated()
.prefix(while: $0.offset < thisMonth )
.filter $0.offset < thisMonth
.map(\.element.localizedUppercase)
对于上一年部分,计算去年,然后使用 map
将年份简单地连接到 .shortMonthSymbols
的元素中
let aYearAgo = Calendar.current.date(byAdding: .year, value: -1, to: Date())!
let lastYear = Calendar.current.component(.year, from: aYearAgo)
let lastYearMonths = Calendar.current.shortMonthSymbols.map "\($0.localizedUppercase), \(lastYear)"
【讨论】:
感谢您的回复,有没有办法在 current.months 中添加 2020 和 2019 月份?但现在从 2020 年开始的几个月将有Jan, 2020
Feb, 2020
和 2019 年将是 Jan, 2019
Feb, 2019
这是真正的问题。显示截至当前月份的一年中的其他月份以及年份。
我更多地考虑拥有一系列我想要的年份的可能性。喜欢 [2019, 2020]
通过创建单独的数组来清理答案,因为这就是我最初编写代码的方式以上是关于在日历 Swift 中更改可见月份的主要内容,如果未能解决你的问题,请参考以下文章