Swift中带有2个日期的If语句

kh212irz  于 2023-04-04  发布在  Swift
关注(0)|答案(1)|浏览(122)

我喜欢显示SwiftUI视图,只有当当前日期等于存储在CoreData属性上的日期时。
我已经尝试了下面这一行,但似乎是不可能的:

if (example.date!, format: .dateTime.day(.twoDigits)) == (Date(), format: .dateTime.day(.twoDigits)) {

然后,我尝试了下面这行,我发现在互联网上:

if Calendar.current.isDate(example.date!, equalTo: Date(), toGranularity: .day) {

但是它没有像预期的那样工作。只有当日期都是04/02/2023时才可以,但是如果日期是04/02/202305/02/2023就不行了。
你们有什么想法吗?谢谢!

3bygqnnd

3bygqnnd1#

添加一个辅助函数作为Date的扩展,它检查特定日期组件的值是否相等

extension Date {
    func isValueOfComponent(_ component: Calendar.Component, equalTo date: Date) -> Bool {
        Calendar.current.component(component, from: self) == Calendar.current.component(component, from: date)
    }
}

然后比较

if example.date!.isValueOfComponent(.day, equalTo: Date())

能够考虑多个组件的更灵活的解决方案是

extension Date {
    func isDateEqual(to date: Date, matching components: Set<Calendar.Component>) -> Bool {
        Calendar.current.dateComponents(components, from: self) == Calendar.current.dateComponents(components, from: date)
    }
}

并利用它

if example.date!.isDateEqual(to: Date(), matching: [.month, .day])

相关问题