簡體   English   中英

從每月的第一天到今天,獲取一系列的天

[英]Get an Array of days from first day of the month till today Swift

我是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]

}

您正在無休止的循環,因為在開始時您的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)!
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM