我从其他一个线程获得了一个代码片段,但我想知道是否有人可以帮助我转换此功能,以便以这种格式打印出当天:“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"
但是我不知道将它放在函数中的位置,因为这是我第一次使用日期。
感谢您的帮助:)
答案 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)