获取日期之间的月份列表
Get list of months between dates
我有两个日期,即 2/02/2016 & 19/03/2018
我正在尝试获取此日期之间的月份和年份作为
输出应该是
Feb 2016, Mar 2016 ......and so on.... Jan 2018, Feb 2018, Mar 2018.
试过月份Gap码-
let date1 = DateComponents(calendar: .current, year: 2016, month: 2, day: 2).date!
let date2 = DateComponents(calendar: .current, year: 2018, month: 3, day: 19).date!
let monthGap = Calendar.current.dateComponents([.month], from: date1, to: date2)
print("monthGap is \(String(describing: monthGap.month))")//prints monthGap is 25
这是一个简单的方法,returns 您可以按照上述格式输入日期和月份,
func getMonthAndYearBetween(from start: String, to end: String) -> [String] {
let format = DateFormatter()
format.dateFormat = "dd/MM/yyyy"
guard let startDate = format.date(from: start),
let endDate = format.date(from: end) else {
return []
}
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(Set([.month]), from: startDate, to: endDate)
var allDates: [String] = []
let dateRangeFormatter = DateFormatter()
dateRangeFormatter.dateFormat = "MMM yyyy"
for i in 0 ... components.month! {
guard let date = calendar.date(byAdding: .month, value: i, to: startDate) else {
continue
}
let formattedDate = dateRangeFormatter.string(from: date)
allDates += [formattedDate]
}
return allDates
}
你这样称呼它,
getMonthAndYearBetween(from: "2/02/2016", to: "19/03/2018")
Swift 5
根据 Sandeep 的回答,此函数接受 Date
个对象作为输入,并将 returns 一个包含 Date
个对象的数组:
extension Date {
static func getMonthAndYearBetween(from start: Date, to end: Date) -> [Date] {
var allDates: [Date] = []
guard start < end else { return allDates }
let calendar = Calendar.current
let month = calendar.dateComponents([.month], from: start, to: end).month ?? 0
for i in 0...month {
if let date = calendar.date(byAdding: .month, value: i, to: start) {
allDates.append(date)
}
}
return allDates
}
}
我有两个日期,即 2/02/2016 & 19/03/2018
我正在尝试获取此日期之间的月份和年份作为
输出应该是
Feb 2016, Mar 2016 ......and so on.... Jan 2018, Feb 2018, Mar 2018.
试过月份Gap码-
let date1 = DateComponents(calendar: .current, year: 2016, month: 2, day: 2).date!
let date2 = DateComponents(calendar: .current, year: 2018, month: 3, day: 19).date!
let monthGap = Calendar.current.dateComponents([.month], from: date1, to: date2)
print("monthGap is \(String(describing: monthGap.month))")//prints monthGap is 25
这是一个简单的方法,returns 您可以按照上述格式输入日期和月份,
func getMonthAndYearBetween(from start: String, to end: String) -> [String] {
let format = DateFormatter()
format.dateFormat = "dd/MM/yyyy"
guard let startDate = format.date(from: start),
let endDate = format.date(from: end) else {
return []
}
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(Set([.month]), from: startDate, to: endDate)
var allDates: [String] = []
let dateRangeFormatter = DateFormatter()
dateRangeFormatter.dateFormat = "MMM yyyy"
for i in 0 ... components.month! {
guard let date = calendar.date(byAdding: .month, value: i, to: startDate) else {
continue
}
let formattedDate = dateRangeFormatter.string(from: date)
allDates += [formattedDate]
}
return allDates
}
你这样称呼它,
getMonthAndYearBetween(from: "2/02/2016", to: "19/03/2018")
Swift 5
根据 Sandeep 的回答,此函数接受 Date
个对象作为输入,并将 returns 一个包含 Date
个对象的数组:
extension Date {
static func getMonthAndYearBetween(from start: Date, to end: Date) -> [Date] {
var allDates: [Date] = []
guard start < end else { return allDates }
let calendar = Calendar.current
let month = calendar.dateComponents([.month], from: start, to: end).month ?? 0
for i in 0...month {
if let date = calendar.date(byAdding: .month, value: i, to: start) {
allDates.append(date)
}
}
return allDates
}
}