Swift 3函数以格式化字符串

时间:2016-11-13 22:51:41

标签: swift nsdate

我从其他一个线程获得了一个代码片段,但我想知道是否有人可以帮助我转换此功能,以便以这种格式打印出当天:“dd-MM-yyyy”。目前它只打印一天。

func getLast7Dates()
{
  let cal = Calendar.current
  var date = cal.startOfDay(for: Date())
  var days = [Int]()

  for i in 1 ... 7 {
    let day = cal.component(.day, from: date)
    days.append(day)
    date = cal.date(byAdding: .day, value: -1, to: date)!
  }

print(days)
}

我知道我需要使用:

let dateFormatter = DateFormatter()

dateFormatter.dateFormat = "dd-MM-yyyy"

但是我不知道将它放在函数中的位置,因为这是我第一次使用日期。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

在您的函数中设置一次格式化程序并按如下方式使用它(不是很多其他小的更改):

func getLast7Dates()
{
    let cal = Calendar.current
    let date = cal.startOfDay(for: Date())
    var days = [String]()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy"    

    for i in 1 ... 7 {
        let newdate = cal.date(byAdding: .day, value: -i, to: date)!
        let str = dateFormatter.string(from: newdate)
        days.append(str)
    }

    print(days)
}

答案 1 :(得分:0)

不是将day附加到数组,而是附加date。然后,返回日期数组,并使用日期格式化程序映射它们:

import Foundation

func getLast7Dates() -> [Date] {
    let today = Date()

    var days = [Date]()

    for i in 1 ... 7 {
        let date = Calendar.current.date(byAdding: .day, value: -i, to: today)!
        days.append(date)
    }

    return days
}

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"

let dateStrings = getLast7Dates().map(dateFormatter.string(from:))

print(dateStrings)

你可以缩短它:

func getLast7Dates() -> [Date] {
    let today = Date()

    return (-7 ... -1).map{ Calendar.current.date(byAdding: .day, value: $0, to: today)!
    }
}

答案 2 :(得分:0)

你会想要使用它:

print(dateFormatter.stringFromDate(date))

此文档为here