首页 > 解决方案 > 有什么方法可以快速划分两个 DateComponents 操作数

问题描述

我可以得到两个特定日期之间的差异,这将等于日期总数。现在我想将工作日除以总天数并将输出作为整数。

 @IBAction func go(_ sender: UIButton) {
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let task = Habits(context: context)


    //total number of days started here
    //last date
    let ldate = "2019-02-15"
    let dateformatter = DateFormatter()
    dateformatter.dateFormat = "yy-MM-dd"
    let formatedStartDate = dateformatter.date(from: ldate)
    //last date
    //current date
    let cDate = Date()
    task.sDate = cDate
    //current date
    let components = Set<Calendar.Component>([.day])
    let differenceOfDate = Calendar.current.dateComponents(components, from: formatedStartDate!, to: cDate)
    print("difference starts from here!!")
    print(differenceOfDate)
    //total number of days ended here


    //working days
    let wDate = "2019-02-15"
    let wDateFormatter = DateFormatter()
    wDateFormatter.dateFormat = "yy-MM-dd"
    let wformatedStartDate = wDateFormatter.date(from: wDate)
    let wcDate = Date()
    task.sDate = wcDate
    let wcomponents = Set<Calendar.Component>([.day])
    let wdifferenceOfDate = Calendar.current.dateComponents(wcomponents, from: wformatedStartDate!, to: wcDate)
    print("difference starts from here!!")
    print(wdifferenceOfDate)
    let per = differenceOfDate/wdifferenceOfDate //error:Binary operator '/' cannot be applied to two 'DateComponents' 
    //working days ended here
}

标签: swift

解决方案


如果我正确地回答了你的问题,那么你想要一个来自differenceOfDateobject 的 day 组件。

你可以得到它differenceOfDate.dayOptional价值,所以你需要if let用于条件展开。检查以下代码:

let workingDays = 5 //Suppose workingDays is 5.
if let differenceInDay = differenceOfDate.day {
    let divideWithWorkingDay = differenceInDay / workingDays
    print(divideWithWorkingDay) // 1
}

推荐阅读