Swift 判断两个日期是否是同一个星期

本文介绍两种使用Swift语言判断两个日期是否属于同一周的方法。第一种方法通过计算日期间的天数差和获取星期几来实现,第二种方法利用了 UserDefaults 和 Calendar 的 weekOfYear 组件进行比较,更为简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swift 判断两个日期是否是同一个星期

 

方法一:

   func isSameWeek() {
        let dateformatter = DateFormatter.init()
        dateformatter.dateFormat = "yyy-MM-dd"
        let fromDate = dateformatter.date(from: "2019-2-28")
        
        let fromWeek = self.getweekDayWithDate(fromDate!)
        let currentWeek = self.getweekDayWithDate(Date())
        
        let betwwen = self.daysBetweenDate(fromDate: fromDate!)
        
        if betwwen >= 7 {
            //show
            print("show")
        }else {
            if fromWeek >= currentWeek {
                //show
                print("show")
            }else {
                //hidden
                print("hidden")
            }
        }
        
   }
    //确定当前x是星期几
    func getweekDayWithDate(_ date : Date) ->Int{
        //日 一 二 三 四 五 六
        //1  2  3  4 5  6  7
        let calensar : Calendar = Calendar.current
        let com = calensar.component(Calendar.Component.weekday, from: date)
        print("----\(com)")
        return com
    }
    func daysBetweenDate(fromDate: Date) -> Int {
        let components = Calendar.current.dateComponents([Calendar.Component.day], from: fromDate, to: Date())
        return components.day ?? 0
    }

上边的发放有些绕,可以参考做其他类似的判断,之后有了一个简单的方法就是:

方法二:

func isSameWeek () -> Bool {
    let currentWeekOfYear = getWeekOfYear(date: Date.init())
    if let saveWeekOfYear = UserDefaults.standard.object(forKey: "popWeekOfYear") as? Int{
        if saveWeekOfYear == currentWeekOfYear {
            return false
        }else {
            UserDefaults.standard.set(currentWeekOfYear, forKey: "popWeekOfYear")
            return true
        }
    }else {
        UserDefaults.standard.set(currentWeekOfYear, forKey: "popWeekOfYear")
        return true
    }
}

func getWeekOfYear(date: Date) -> Int {
    let components = Calendar.current.dateComponents([Calendar.Component.weekOfYear], from: date)
    return components.weekOfYear ?? 0
}

 

自己原创 贴出来共享,转载请注明出处。。。(^-^)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值