快速使用日期,检查是否为新月

时间:2018-11-20 04:17:56

标签: ios swift date

我目前正在开发一个应用程序,我想通知用户并在新的月份开始后重置该应用程序的某个方面。每月的每次更改都需要重复此重置操作。

使用Swift并安装了DateToolsSwift吊舱。

让它正常工作的最佳方法是什么

2 个答案:

答案 0 :(得分:0)

func checkIfNewMonth(newDate: Date, oldDate: Date){

    var userCalendar = Calendar.current
    userCalendar.timeZone = TimeZone(abbreviation: "UTC")!

    let oldComponents = userCalendar.dateComponents([.month, .year], from: oldDate)
    let newComponents = userCalendar.dateComponents([.month, .year], from: newDate)

    guard let oldCompareDate = userCalendar.date(from: oldComponents) else { return }
    guard let newCompareDate = userCalendar.date(from: newComponents) else { return }

    if newCompareDate > oldCompareDate {
        //New date is a new month
    } else if newCompareDate < oldCompareDate {
        //New date is an previous month
    }
}

以为我会发布一个函数,该函数可以执行op所要求的操作。只需输入要比较的两个日期即可。我认为UserDefaults也是存储旧日期的好方法。

答案 1 :(得分:0)

日历can tell you the range of the current month。下个月从当月月底开始:

let startOfNextMonth = Calendar.current.dateInterval(of: .month, for: Date())?.end
let formatter = DateFormatter()
formatter.dateStyle = .long
print(startOfNextMonth.map(formatter.string(from:)) ?? "not a date")

为此日期简单地安排一个UNNotificationRequest