gpt4 book ai didi

swift - 从 "Start"时间计算 "End"时间

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

我正在努力创建一个函数,它接受输入持续时间和“结束”时间,并根据该标准计算“开始”时间。

示例:如果“结束”时间为下午 5:00,“持续时间”为 30 分钟,则返回的“开始”时间应为下午 4:30。

我在 Int/Date/String 之间进行转换时迷失了方向,因此我可能需要重新考虑我的整个方法。到目前为止,我正在处理以下内容,这只是 this Stack Overflow post 的一部分:

var userInputEventEndTime: String
var userInputEventDuration: Int
var userInputEventNeedsToStartTime: String

//Manipulate this function with the input parameters
func makeDate(hr: Int, min: Int, sec: Int) -> Date {
var calendar = Calendar(identifier: .gregorian)
let components = DateComponents(hour: hr, minute: min, second: sec)
let hour = calendar.component(.hour, from: calendar.date(from: components)!)
let minutes = calendar.component(.minute, from: calendar.date(from: components)!)
let seconds = calendar.component(.second, from: calendar.date(from: components)!)
return calendar.date(from: components)!
}

我应该将输入字符串转换为 DateComponents 然后进行数学计算吗?如果是这样,我不确定如何将分钟数转换为小时数。或者只是完全不同的方向?谢谢!

最佳答案

下面使用DateComponents和Calendar来计算开始时间

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
let calendar = Calendar.current
let dateComponents = DateComponents(calendar: calendar, minute: -userInputEventDuration)

if let endTime = dateFormatter.date(from: userInputEventEndTime),
let startTime = calendar.date(byAdding: dateComponents, to: endTime, wrappingComponents: false) {
userInputEventNeedsToStartTime = dateFormatter.string(from: startTime)
}

下面是用一个例子写成函数的相同解决方案

func calculateStartTime(from endTime: String, duration: Int) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
let calendar = Calendar.current

let dateComponents = DateComponents(calendar: calendar, minute: -duration)
if let time = dateFormatter.date(from: endTime),
let startTime = calendar.date(byAdding: dateComponents, to: time, wrappingComponents: false) {
return dateFormatter.string(from: startTime)
}

return nil
}

if let startTime = calculateStartTime(from: "6:00 PM", duration: 30) {
print("Event starts at \(startTime)")
}

输出

Event starts at 05:30 PM

关于swift - 从 "Start"时间计算 "End"时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662042/

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