gpt4 book ai didi

swift - 如何快速计算跨越两天的两次之间的正确时间间隔?

转载 作者:行者123 更新时间:2023-11-28 07:22:27 30 4
gpt4 key购买 nike

我正在尝试获取跨越两天(隔夜)的两次之间的正确时间间隔。这是我的代码成功打印出两次之间的差异 - 但是对于我的用例,我需要跨越一夜的能力,我该怎么做?

    let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"

//This time represents (23:00, Aug 07) for example
let date1 = dateFormatter.date(from: "23:00")!

//This time represents (06:00, Aug 08) for example
let date2 = dateFormatter.date(from: "06:00")!

let elapsedTime = date2.timeIntervalSince(date1)
print(abs(elapsedTime)/60/60)

//prints 17.0

我想要的结果是打印出 7 个,因为这是 8 月 7 日 23:00 到 8 月 8 日 06:00 之间的小时数 - 我当前的代码正确地显示了这两个时间之间的间隔(如如果它们来自同一天),但我正在尝试解决这些时间何时重叠两天的问题。任何帮助将不胜感激。

更新:

为了提供更完整的图片,我有一个对象,该对象的开始和结束日期由字符串表示:

Activity(startTime: "23:00", endTime:  "06:00")

我使用一些函数将这些字符串转换为日期:

func startDate(startTime: String) -> Date {
let currentDate = Date().string(format: "dd-MM-yyyy")
let myStartingDate = "\(currentDate) \(startTime)"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
let startDate = dateFormatter.date(from: myStartingDate)

return startDate!
}

func endDate(endTime: String) -> Date {
let currentDate = Date().string(format: "dd-MM-yyyy")
let myEndingDate = "\(currentDate) \(endTime)"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
let endDate = dateFormatter.date(from: myEndingDate)

return endDate!
}

所以我更完整的工作看起来更像这样:

func calculateTimeInterval(activity: Activity) {

let startHourDate = self.startDate(startTime: activity.startTime)
let endHourDate = self.endDate(endTime: activity.endTime)

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"

//This time represents (23:00, Aug 07) for example
let date1 = startHourDate!

//This time represents (06:00, Aug 08) for example
let date2 = endHourDate!

let elapsedTime = date2.timeIntervalSince(date1)
print(abs(elapsedTime)/60/60)

}

//prints 17.0

最佳答案

如果没有日期部分,确定结束时间是否超过午夜的唯一方法是结束时间是否小于开始时间。如果是这样,您的代码可以更改为

var elapsedTime = date2.timeIntervalSince(date1)
if elapsedTime < 0 {
let date3 = date2 + 60 * 60 * 24
elapsedTime = date3.timeIntervalSince(date1)
}
print(elapsedTime/60/60)

关于swift - 如何快速计算跨越两天的两次之间的正确时间间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672161/

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