在日历 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, 2020Dec, 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 中更改可见月份的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中仅获取可见日历

如何更改zabuto日历上的日期

LWUIT 日历问题

JQuery 日历图像更改

显示更多配置反应大日历

为 html5 原生日期选择器设置日历样式