我目前正在开发一个应用程序,我想通知用户并在新的月份开始后重置该应用程序的某个方面。每月的每次更改都需要重复此重置操作。
使用Swift并安装了DateToolsSwift吊舱。
让它正常工作的最佳方法是什么
答案 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。