计算Swift Int中的时间差
问题描述:
我需要计算两个Int之间的差异并将其格式化为小时,分钟。我可以使用下面的函数来部分区分初始int差异。计算Swift Int中的时间差
示例:如果我有0811
开始int和然后的0912
端诠释的差为101。如果我然后采取12
从结果我应该有91
。当我使用结果转换为时间时,它返回1小时31分钟 - 这是正确的。不过,我需要以某种方式将其进一步转换为链,然后将其取消以正确格式化时间。这应该意味着101
应该是1小时1分钟。
func calculateTimeDifference(start: Int, end: Int, longVersion: Bool) -> String {
let count = end - start
let total = minutesToHoursMinutes(minutes: count)
var formatted = ""
if total.hours != 0 {
formatted += "\(total.hours)"
let amount = total.hours > 1 ? " hours " : " hour "
formatted += amount
}
if total.leftMinutes != 0 {
formatted += "\(total.leftMinutes)"
let amount = total.leftMinutes > 1 ? " minutes " : " minute "
formatted += amount
}
return String(describing: formatted)
}
func minutesToHoursMinutes(minutes : Int) -> (hours : Int, leftMinutes : Int) {
return (minutes/60, (minutes % 60))
}
答
你不应该被减去他们计算Int
小号表示两个时间之间的区别。使用适当的Date
API。
在这里,我首先将Int
s转换为字符串,然后使用日期格式化程序对其进行解析。之后,timeIntervalSince
可以在几秒钟内告诉你的差异。你只需要一些模数和分数来获得小时和分钟:
func calculateTimeDifference(start: Int, end: Int) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "HHmm"
var startString = "\(start)"
if startString.characters.count < 4 {
for _ in 0..<(4 - startString.characters.count) {
startString = "0" + startString
}
}
var endString = "\(end)"
if endString.characters.count < 4 {
for _ in 0..<(4 - endString.characters.count) {
endString = "0" + endString
}
}
let startDate = formatter.date(from: startString)!
let endDate = formatter.date(from: endString)!
let difference = endDate.timeIntervalSince(startDate)
return "\(Int(difference)/3600)Hr \(Int(difference) % 3600/60)Min"
}
+0
谢谢 - 这天晚了,已经过时了! – user7684436
你的问题是如此混乱。 101分钟= 1小时41分钟。现在你想要什么? –
究竟是什么问题? – TNguyen
我期待着使用两个Ints之间的差异,如果结果是100的倍数,那么假设每个100是一个小时,剩下的就是几分钟。 – user7684436