0 julia
我有Julia的这段代码,可以将秒转换为小时,分钟和秒,但是当我运行它时,我得到(0, 0, 0)的只是输出。有人可以告诉我这怎么了吗?
function convert_from_seconds(sec::Int64)
hours = 0
minutes = 0
seconds = 0
time = (hours, minutes, seconds)
if sec < 60
seconds = sec
elseif sec < 3600
minutes = floor(sec / 60)
seconds = sec % 60
elseif sec < 216000
hours = floor(sec / 3600)
minutes = floor(hours % 3600)
seconds = minutes % 60
end
return time
end
Run Code Online (Sandbox Code Playgroud)
这是您可能需要考虑的另一种方法:
function convert_from_seconds(sec::Int)
x, seconds = divrem(sec, 60)
hours, minutes = divrem(x, 60)
hours, minutes, seconds
end
Run Code Online (Sandbox Code Playgroud)
考虑使用标准DatesAPI及其算法-太好了!比编写自己的函数更优雅:
julia> using Dates
julia> s = Time(0) + Second(4000)
01:06:40
julia> hour(s), minute(s), second(s)
(1, 6, 40)
Run Code Online (Sandbox Code Playgroud)
如果您考虑24小时或更长时间,以上代码将无法获得预期的结果
julia> s = DateTime(0) + Second(4*3600*24+4000)
0000-01-05T01:06:40
julia> year(s), (month(s)-1), (day(s)-1), hour(s), minute(s), second(s)
(0, 0, 4, 1, 6, 40)
Run Code Online (Sandbox Code Playgroud)
没有零月或零日,所以我们需要减去1。