如何用当前月份和接下来的月份制作一个数组。?
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
作为选择器视图的数据源。
【讨论】:
我尝试在此处实现您所拥有的,并给我这个错误“无法将 'ArraySlicemonthsInPickerView
数组加上所有不在该数组中的东西。以上是关于如何用当前月份和接下来的月份制作一个数组。?的主要内容,如果未能解决你的问题,请参考以下文章
如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?
我如何用具有实际月份名称的区域设置首选日期格式来格式化日期?
一JavaScript获取当前月份的前12个月,获取最近的12个月二js实现获取当前月份前的12个月份,格式化后放在一个数组里