获取当前时间之前的年月数据

获取当前时间之前的年月数据

/// @param min: 从当前时间往前多少个月份
/// @return: 返回年月时间字符串的数组
func getDateYearMonths(min: NSInteger) -> [String] {
    
    var data: [String] = []
    //当前日期时间
    let currentDate = Date()
    //设定数据格式为xxxx-mm
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM"
    //通过日历可以直接获取前几个月的日期,所以这里直接用该类的方法进行循环获取数据
    let calendar = Calendar(identifier: .gregorian)
    
    var lastMonthComps = DateComponents()
    var dateStr = formatter.string(from: currentDate)
    
    let lastIndex = -min
    
    var currentIndex = 0
    
    var newdate: Date?
    //循环获取可选月份,从当前月份到最小月份,直接用字符串的比较来判断是否大于设定的最小日期
    while currentIndex != lastIndex {
        data.append(dateStr)
        currentIndex -= 1
        //获取之前n个月, setMonth的参数为正则向后,为负则表示之前
        lastMonthComps.month = currentIndex
        newdate = calendar.date(byAdding: lastMonthComps, to: currentDate)
        if let newdate = newdate {
            dateStr = formatter.string(from: newdate)
        }else{
            currentIndex = lastIndex
        }
    }
    return data
}

print(getDateYearMonths(min: 0))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值