[英]How to get start date and end date of previous month in Swift
I am new in Swift and I am trying to get start date and end date of previous month.我是 Swift 的新人,我正在尝试获取上个月的开始日期和结束日期。 I know how to do for current month like this
我知道这个月该怎么做
extension Date {
func startOfMonth() -> Date {
return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month], from: Calendar.current.startOfDay(for: self)))!
}
func endOfMonth() -> Date {
return Calendar.current.date(byAdding: DateComponents(month: 1, day: -1), to: self.startOfMonth())!
}
}
But I don't know how to do for previous month.但是我不知道上个月该怎么做。 I tried code but not working
我试过代码但没有工作
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *components = [calendar components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:currentDate];
components.month = components.month - 1;
components.day = 1;
NSDate *newDate = [calendar dateFromComponents:components];
But it is in Objective C.但它在目标 C 中。
first you get current month by current date then minus 1 to get previous month首先你得到当前日期的当前月份,然后减去 1 得到上个月
extension Date {
func addingRmoving(months: Int) -> Date? {
let calendar = Calendar(identifier: .gregorian)
var components = DateComponents()
components.calendar = calendar
components.timeZone = TimeZone(secondsFromGMT: 0)
components.month = months
return calendar.date(byAdding: components, to: self)
}
var startOfMonth: Date {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.year, .month], from: self)
return calendar.date(from: components)!
}
var endOfMonth: Date {
var components = DateComponents()
components.month = 1
components.second = -1
return Calendar(identifier: .gregorian).date(byAdding: components, to: startOfMonth)!
}
}
and how to use it以及如何使用它
let lastMonth = Date().addingRmoving(months: -1)
let fisrtDayOfLastMonth = lastMonth.startOfMonth
let lastDayOfLastMonth = lastMonth.endOfMonth
//Mark: - To get last months first day's date
func getLastMonthsFirstDay() -> Date {
let calendar = Calendar.current
let currentDate = Date()
var components = calendar.dateComponents([.day, .month, .day], from: currentDate)
components.month = components.month! - 1
components.day = 1
return calendar.date(from: components)!
}
//Mark: - To get last months last day's date
func getLastMonthsLastDay() -> Date {
let calendar = Calendar.current
let currentDate = Date()
var components = calendar.dateComponents([.day, .month, .day], from: currentDate)
components.month = components.month! - 1
components.day = -1
return calendar.date(from: components)!
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.