gpt4 book ai didi

swift - 在 Swift 中获取两个日期之间的百分比作为 float

转载 作者:行者123 更新时间:2023-11-28 10:13:27 25 4
gpt4 key购买 nike

所以我目前正在尝试添加一个功能,给定两个日期,会告诉我我走了多远。

TLDR:所以,假设我有一个日期是 2017 年 7 月 1 日 20:00:00,另一个是 2017 年 7 月 2 日 22:00:00,今天是 7 月 2 日,08:00:00,然后我会知道我已经完成了 46.17%。

我尝试这样做的方法是使用一个简单的公式:

progress = (current time - start time) / (end time - start time)

但是当放入代码中时,我可以减去两个日期,并得到 DateComponent 的差异,但我不能将两个 DateComponent 相除。这是我的代码设置,扩展名为 t

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

let startDate = formatter.date(from: "2017-07-01 20:00:00")
let endDate = formatter.date(from: "2017-07-02 22:00:00")
let currentDate = formatter.date(from: "2017-07-01 08:00:00")

let progress = (currentDate - startDate) / (endDate - startDate)



extension Date {
static func - (date1: Date, date2: Date) -> DateComponents {
let calender:Calendar = Calendar.current
return calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2)
}
}

必须有一种方法来划分两个日期。不过我想不出来,我在网上找到的所有东西(使用不同的语言)都需要在两个日期之间进行划分。

我试图将所有内容都转换为秒,然后将其除以,但我不知道如何处理秒以将它们转换回 DateComponent,因为可能存在 5000 秒的差异。任何帮助表示赞赏!

最佳答案

您只需要将日期转换为数字,因为这样您就可以对它们进行加减。

您可以使用 timeIntervalSince1970 将日期转换为数字,然后您可以使用您的公式:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let startDate = formatter.date(from: "2017-07-01 20:00:00")!.timeIntervalSince1970
let endDate = formatter.date(from: "2017-07-02 22:00:00")!.timeIntervalSince1970
let currentDate = formatter.date(from: "2017-07-02 08:00:00")!.timeIntervalSince1970

let percentage = (currentDate - startDate) / (endDate - startDate)

或者,使用timeIntervalSince(_:):

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let startDate = formatter.date(from: "2017-07-01 20:00:00")!
let duration = formatter.date(from: "2017-07-02 22:00:00")!.timeIntervalSince(startDate)
let elapsed = formatter.date(from: "2017-07-02 08:00:00")!.timeIntervalSince(startDate)

let percentage = elapsed / duration

我认为这种方式更好,因为你得到的数学更少 :)。

关于swift - 在 Swift 中获取两个日期之间的百分比作为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44829258/

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