Julia函数将秒转换为小时,分钟,秒的问题

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)

Bog*_*ski 7

这是您可能需要考虑的另一种方法:

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)


Prz*_*fel 5

考虑使用标准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