簡體   English   中英

在Swift中使用NSDate無法正確獲取日期

[英]Date not getting correctly using NSDate In Swift

我想打印日期[1,2,3 ....當前日期],但沒有得到正確的結果。 因為當我在代碼中將第一天設置為“ 1”時,所以在[2,3,4]中輸出。 而當我將天設置為“ 0”時。 結果顯示正確,但顯示了額外的日期[1,2,3,4,5]。 今天是2016年10月4日,作為我的時區。

    let date = NSDate()
    let components = NSCalendar.currentCalendar().components([.Day , .Month , .Year], fromDate: date)
    let year =  components.year
    let month = components.month
    let day =  1  // Output is [2,3,4]
 // let day =  0   than o/p [1,2,3,4,5]


    dateFormatatter.dateFormat = "MMMM yyyy"
    monthNameLabel.text = dateFormatatter.stringFromDate(date)

    startDate.year = year
    startDate.month = month
    startDate.day = day
    let startDateNSDate = calendar.dateFromComponents(startDate)!

    var dateStart = startDateNSDate // first date
    let endDate = NSDate() // last date

    dateFormatatter.dateFormat = "dd"


    while dateStart.compare(endDate) != .OrderedDescending {
        // print(fmt.stringFromDate(date))
        // Advance by one day:
        dateStart = calendar.dateByAddingUnit(.Day, value: 1, toDate: dateStart, options: [])!


        let dateFormat1 = NSDateFormatter()
        dateFormat1.dateFormat = "dd-MM-yyyy"

        dateArrayCalendar.addObject(dateFormatatter.stringFromDate(dateStart))
        dateArrayForCompare.addObject(dateFormat1.stringFromDate(dateStart))

    }

我想要這樣的結果[1,2,3,4]

和這里同樣的問題

let componentsForCompare = calendar.components([.Year, .Month], fromDate: date)
        let startOfMonth = calendar.dateFromComponents(componentsForCompare)!
        print(startOfMonth)//2016-09-30 18:30:00 +0000
        print(dateFormatatter.stringFromDate(startOfMonth)) //01

它給出不同的輸出

您需要在while循環的末尾而不是在開始時增加日期:

while dateStart.compare(endDate) != .OrderedDescending {
    // print(fmt.stringFromDate(date))
    // Advance by one day:

    let dateFormat1 = NSDateFormatter()
    dateFormat1.dateFormat = "dd-MM-yyyy"

    dateArrayCalendar.addObject(dateFormatatter.stringFromDate(dateStart))
    dateArrayForCompare.addObject(dateFormat1.stringFromDate(dateStart))

    dateStart = calendar.dateByAddingUnit(.Day, value: 1, toDate: dateStart, options: [])!
}

暫無
暫無

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

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