计算两次没有日期的分钟数

时间:2016-07-26 20:39:39

标签: ios iphone swift ipad

我有两次想要计算它们之间的分钟差异。它们如下:

startDate = "23:51"
endDate = "00:01"

它们都是String类型,因为随后没有附加日期。我知道通常的做法是将两者都转换为Date,然后使用NSCalendar计算时间差:

extension Date {
    func minutes(from date: Date) -> Int {
        return Calendar.current.components(.minute, from: date, to: self, options: []).minute ?? 0
    }
}

然而,由于天数,月数等未知,因此会产生错误的结果。我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

这是一种在不使用NSDate的情况下找到差异的基本方法:

let startDate = "23:51"
let endDate = "00:01"

let startArray = startDate.componentsSeparatedByString(":") // ["23", "51"]
let endArray = endDate.componentsSeparatedByString(":") // ["00", "01"]

let startHours = Int(startArray[0])! * 60 // 1380
let startMinutes = Int(startArray[1])! + startHours // 1431

let endHours = Int(endArray[0])! * 60 // 0
let endMinutes = Int(endArray[1])! + endHours // 1

var timeDifference = endMinutes - startMinutes // -1430

let day = 24 * 60 // 1440

if timeDifference < 0 {
    timeDifference += day // 10
}

最后timeDifference等于10

此功能假定结束日期将在开始日期之后发生,无论如何。因此,如果结束日期是开始日期之前的时间,则将添加1440分钟(1天)。它还假设日期的格式为&#34; hh:mm&#34;小时范围从0到24,分钟范围从0到60。