获取从当月第一天到今天的天数 Swift
Posted
技术标签:
【中文标题】获取从当月第一天到今天的天数 Swift【英文标题】:Get an Array of days from first day of the month till today Swift 【发布时间】:2016-11-01 16:48:34 【问题描述】:我是 ios 和编程的新手,我需要以某种方式从当月的第一天到今天获取一个数组。和一个阵列过去 3 个月到今天,但我不知道该怎么做,请任何帮助或想法?
我检查了这个以获得每月的第一天:
extension Date
func startOfMonth() -> Date?
let comp: DateComponents = Calendar.current.dateComponents([.year, .month, .hour], from: Calendar.current.startOfDay(for: self))
return Calendar.current.date(from: comp)!
但它只能在 ViewController 中工作,如果在我的项目的其他部分这样做该怎么办?而且我不知道如何迭代数组以获取第一天到今天之间的所有天...
编辑
我做了这样的事情,但它给了我一个无限循环..我做错了什么?
func weatherDatesFromCurrentDayMonth() -> [Any]
var date = Date()
let currentCalendar = Calendar.current
var dateComponents = DateComponents()
dateComponents.month = -1
// dateComponents.day = 1
let endingDate = Calendar.current.date(byAdding: dateComponents, to: date)
print("\(endingDate!)")
var datesArray = Array<Any>()
while date.compare(endingDate!) != ComparisonResult.orderedAscending
var dateComponents = DateComponents()
dateComponents.day = 1
date = Calendar.current.date(byAdding: dateComponents, to: date)!
datesArray.append(date)
print("\(datesArray)")
return [datesArray]
【问题讨论】:
【参考方案1】:你有一个无限循环,因为一开始你的endingDate
已经是一个月前了,而date
是现在。由于在循环内你只增加date
它永远不会总是在endingDate
之后,因此你的条件总是true
试试这个代码:
func weatherDatesFromCurrentDayMonth() -> [Date]
let now = Date()
var currentDate = previousMonth(date: now)
var datesArray = [Date]()
while currentDate < now
datesArray.append(currentDate)
currentDate = nextDay(date:currentDate)
print("result: \(datesArray)")
return datesArray
func nextDay(date: Date) -> Date
var dateComponents = DateComponents()
dateComponents.day = 1
return Calendar.current.date(byAdding: dateComponents, to: date)!
func previousMonth(date: Date) -> Date
var dateComponents = DateComponents()
dateComponents.month = -1
return Calendar.current.date(byAdding: dateComponents, to: date)!
【讨论】:
以上是关于获取从当月第一天到今天的天数 Swift的主要内容,如果未能解决你的问题,请参考以下文章