如何用当前月份和接下来的月份制作一个数组。?

Posted

技术标签:

【中文标题】如何用当前月份和接下来的月份制作一个数组。?【英文标题】:How to make an array with current month and the following months to follow.? 【发布时间】:2017-10-09 17:19:13 【问题描述】:

我正在用一年中的所有月份制作一个pickerView,我想在pickerView 的开头创建一个包含当前月份的数组,并在接下来的月份创建一个数组,依此类推。我已经用所有月份填充了 pickerView 和数组,并且我也得到了当前日期。

let Months = ["January","Febrary","March","April","May","June","July","August","September","October","November","December"]

@IBOutlet var DateLabel: UILabel!

override func viewDidLoad() 
    super.viewDidLoad()

    DateTime()


func DateTime() 

    let time = DateFormatter ()
    let date = DateFormatter ()

    time.timeStyle = .medium
    date.dateStyle = .full

    print(time.string(from: Date()))
    print(date.string(from: Date()))

    //RiderTimeStampRequested = time.string(from: Date())
    DateLabel.text = date.string(from: Date())


func numberOfComponents(in pickerView: UIPickerView) -> Int 
    return 1


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
    return Months.count


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
     return Months[row]


func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
     print(Months[row])

【问题讨论】:

仅供参考 - 不要硬编码您自己的月份名称数组。从DateFormatter monthSymbols(或其变体之一)获取它们。 【参考方案1】:

如果我理解正确,您想要获取当前月份之后的所有月份(包括当前月份)的数组。如果当前是 7 月,您的数组将包含:

["July", "August", "September", "October", "November", "December"]

为此,我们可以使用dropFirst 方法删除数组的前x 个元素。

你可以像这样声明一个新属性:

var monthsInPickerView: [String]!

然后在viewDidLoad中初始化:

let calendar = Calendar.current
let month = calendar.dateComponents([.month], from: Date()).month!
monthsInPickerView = Array(Months.dropFirst(month - 1))

然后您将使用monthsInPickerView 作为选择器视图的数据源。

【讨论】:

我尝试在此处实现您所拥有的,并给我这个错误“无法将 'ArraySlice' 类型的值分配给'[String]!' " 在这一行中 monthsInPickerView = Months.dropFirst(month - 1) 谢谢 它有效!非常感谢,最后一件事,我如何不断重复这些月? 12 月之后回到 1 月,以此类推,持续数月。 @Roger 这样的事情可能会有所帮助:***.com/questions/26063039/uipickerview-loop-the-data 你的数据源将是monthsInPickerView 数组加上所有不在该数组中的东西。

以上是关于如何用当前月份和接下来的月份制作一个数组。?的主要内容,如果未能解决你的问题,请参考以下文章

如何用excel计算月份和天数?

如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?

我如何用具有实际月份名称的区域设置首选日期格式来格式化日期?

一JavaScript获取当前月份的前12个月,获取最近的12个月二js实现获取当前月份前的12个月份,格式化后放在一个数组里

在Java中如何用calendar类输入年和月份打印当月的日历

JS 如何获取当前上一个月下一个月和月份所含天数