В Юлии конвертировать прошедшее время в часы: минуты: секунды - PullRequest
0 голосов
/ 17 сентября 2018

Преобразование секунд в Часы: Минуты: Ответы на секунды получены несколькими способами для Python здесь .

Как можно это сделать в Джулии?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Не совсем то, что вы просили, но, возможно, все еще полезно:

julia> using Dates

julia> start = now(); sleep(1.23); elapsed = now() - start;

julia> canonicalize(Dates.CompoundPeriod(elapsed))
1 second, 231 milliseconds

См. https://discourse.julialang.org/t/conversion-and-formatting-of-dates-timeperiod/15063.

0 голосов
/ 17 сентября 2018

Метод 1:

Этот код следует за ответом Брэндона Родса в Python по ссылке в оригинальном вопросе.Он отвечает на исходный вопрос.

Преимущество : Простота.

Недостаток : Для длинных прогонов симуляции вывод не будет отформатирован так хорошо, какметод, данный после этого.

using Printf

start = time()
sleep(65.129)  # 65.129 seconds
elapsed = time() - start

(minutes, seconds) = fldmod(elapsed, 60)
(hours, minutes) = fldmod(minutes, 60)

@printf("%02d:%02d:%0.2f", hours, minutes, seconds)

"""========== The expected output is ==========
00:01:5.16
"""

Метод 2 :

@ crstnbr решает аналогичную проблему с функцией canonacalize.Я не вижу его в документации по Julia 1.0.0, но я нашел его в источнике Julia как связанный здесь .

Он обладает изящным свойством изящной обработки как коротких, так и длинных промежутков времени.периоды времени.

Преимущество : Предоставляет полезный формат для длительного времени.

Недостаток : Похоже, что в текущем Julia 1.0.0 Документация, возможно, будет трудно запомнить.

julia> start = now(); sleep(1.23); elapsed = now() - start;
julia> canonicalize(Dates.CompoundPeriod(elapsed))
1 second, 246 milliseconds

julia> canonicalize(Dates.CompoundPeriod(elapsed*1000000))
2 weeks, 10 hours, 6 minutes, 40 seconds

Если вы проводите длительные симуляции, это может быть полезно.

...