gpt4 book ai didi

xcode - Swift - 检查日期是否在下周/下月。 ( isDateInNextWeek() isDateInNextMonth() )

转载 作者:搜寻专家 更新时间:2023-11-01 06:09:08 24 4
gpt4 key购买 nike

我们在日历中有那些方便的功能:

let calendar = NSCalendar.currentCalendar()
calendar.isDateInToday(date)
calendar.isDateInTomorrow(date)

但是我错过了那两个:

  • calendar.isDateInNextWeek(日期)

  • calendar.isDateInNextMonth(日期)

正如@Rob 提到的,意思是:“从下周日开始的日历周,到下周六”

我很难弄清楚如何以涵盖所有极端情况的稳健方式实现这些功能。

有人可以提供助手吗?

最佳答案

使用 Swift 5 和扩展 Calendar 解决了问题。

extension Calendar {
private var currentDate: Date { return Date() }

func isDateInThisWeek(_ date: Date) -> Bool {
return isDate(date, equalTo: currentDate, toGranularity: .weekOfYear)
}

func isDateInThisMonth(_ date: Date) -> Bool {
return isDate(date, equalTo: currentDate, toGranularity: .month)
}

func isDateInNextWeek(_ date: Date) -> Bool {
guard let nextWeek = self.date(byAdding: DateComponents(weekOfYear: 1), to: currentDate) else {
return false
}
return isDate(date, equalTo: nextWeek, toGranularity: .weekOfYear)
}

func isDateInNextMonth(_ date: Date) -> Bool {
guard let nextMonth = self.date(byAdding: DateComponents(month: 1), to: currentDate) else {
return false
}
return isDate(date, equalTo: nextMonth, toGranularity: .month)
}

func isDateInFollowingMonth(_ date: Date) -> Bool {
guard let followingMonth = self.date(byAdding: DateComponents(month: 2), to: currentDate) else {
return false
}
return isDate(date, equalTo: followingMonth, toGranularity: .month)
}
}

用法:

let day: Double = 60 * 60 * 24
let currentDate = Date() // Thu 25 Apr 2019
let futureDate = Date(timeInterval: 3 * day, since: currentDate) // Sun 28 Apr 2019
if Calendar.current.isDateInThisWeek(futureDate) {
// this will be executed if first day of week is Monday
} else {
// this will be executed if first day of week is Sunday
}

代码根据 Calendar 实例评估日期是否在范围内 (sameWeek, nextWeek)。

如果 Calendar 实例是 current 它将根据设备设置确定一周的开始(星期一或星期日),但如果您想要不同的行为,您可以更改 日历实例:日历(标识符:.chinese).isDateInNextWeek(someDate)

如果我们尝试使用不正确的值创建 DateComponents,此代码也有效,例如:DateComponents(year: 2019, month: 13)。在本例中,它创建日期 2020 年 1 月 1 日

关于xcode - Swift - 检查日期是否在下周/下月。 ( isDateInNextWeek() isDateInNextMonth() ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com