简体   繁体   English

如何在Swift中获取上个月的开始日期和结束日期

[英]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.

相关问题 如何获取当月的开始日期和结束日期(Swift 3) - How to get start date and end date of the current month (Swift 3) 如何使用任何月份和周数 swift 3 获取周开始日期和结束日期? - How to get week start date and end date by using any Month and week number swift 3? 如何获取与指定日期匹配的上个月的日期? [迅速] - How to get the date of previous month matching specified day ? [Swift] SwiftUI 中月份的开始和结束日期 - Start and End date of month in SwiftUI 如何快速将日期,月份和年份转换为毫秒 - How to get Date, Month and Year into Millisecond in swift 获取给定月份的开始日期和结束日期的所有周(NSDate 目标 C) - Get All Weeks with start date and end date of given month (NSDate Objective C) 我有开始日期时间和结束日期时间如何在 iOS Swift 4 中显示结束销售 - I have Start Date Time And End Date Time How To Show End Sale in iOS Swift 4 Swift:将开始日期和结束日期格式化为单个字符串 - Swift: Format a a start and end date into a single string 是否可以在 Swift 中使用 JTAppleCalendar 设置开始日期和结束日期? - Is it possible to set start date and end date with JTAppleCalendar in Swift? 双周工资单频率的开始日期/结束日期 - Swift - Start date/end date for biweekly payroll frequency - Swift
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM