Swift 3 函数以格式化字符串打印出最近 7 天
Swift 3 function to print out last 7 days in formatted string
我从其他线程之一得到了一个代码片段,但我想知道是否有人可以帮助我转换这个函数,以便它以这种格式打印出日期:"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"
但我不知道将它放在函数中的什么位置,因为这是我第一次使用日期。
感谢您的帮助:)
不是将 day
附加到数组,而是附加 date
。然后,return 日期数组,并使用您的日期格式化程序映射它们:
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: [=11=], to: today)!
}
}
在您的函数中设置一次格式化程序并按如下方式使用它(没有很多其他小的更改):
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)
}
你会想要使用这个:
print(dateFormatter.stringFromDate(date))
这方面的文档是 here
我从其他线程之一得到了一个代码片段,但我想知道是否有人可以帮助我转换这个函数,以便它以这种格式打印出日期:"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"
但我不知道将它放在函数中的什么位置,因为这是我第一次使用日期。
感谢您的帮助:)
不是将 day
附加到数组,而是附加 date
。然后,return 日期数组,并使用您的日期格式化程序映射它们:
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: [=11=], to: today)!
}
}
在您的函数中设置一次格式化程序并按如下方式使用它(没有很多其他小的更改):
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)
}
你会想要使用这个:
print(dateFormatter.stringFromDate(date))
这方面的文档是 here