Перейти к содержимому
serafim

Перевод секунд в формат часов

Рекомендуемые сообщения

Бывает необходимость показать время работы или ожидания программы, которое составляет по несколько часов

и смотреть что прошло 100500 секунд крайне не удобно, куда привычнее наблюдать в формате часов.

Перекопав интернет на LUA ни чего не нашел, только на C# так что адаптировав оставлю примеры здесь,

может кому и  пригодится. Добавил варианты предложенные @BrightYC

 

Перевод секунд в формат часов

Скрытый текст

timestamp = 100500 -- любое число в секундах

print(os.date("%H:%M:%S", timestamp))

 

Скрытый текст

local function sectotime(seconds)
  local m = math.floor(seconds / 60)
  local s = seconds % 60
  local h = math.floor(m / 60)
  local m = m % 60
  print("Ч: "..h.."  М: "..m.."  С: "..s)
end

sectotime(100500) -- секунд

 

 

Показать сколько прошло времени от включения в формате часов

Скрытый текст

local computer = require("computer")

print(os.date("%H:%M:%S", computer.uptime()))

 

Скрытый текст

local computer = require("computer")
local term = require("term")

local uptime = computer.uptime()

local function pasttime()
  local seconds = math.ceil(computer.uptime()-uptime)
  local m = math.floor(seconds / 60)
  local s = seconds % 60
  local h = math.floor(m / 60)
  local m = m % 60
  term.write("Ч: "..h.."  М: "..m.."  С: "..s)
end

term.clear()
while true do
  pasttime()
  os.sleep(1)
  term.clearLine()
end

 

 

Отсчет времени в формате часов

Скрытый текст

local term = require("term")
local seconds = 120 --секунды

term.clear()
for i = seconds, 1, -1 do
  term.write(os.date("%H:%M:%S", i))
  os.sleep(1)
  term.clearLine()
end
term.clear()
print("время вышло")

 

Скрытый текст

local term = require("term")

local function countdown(seconds)
  term.clear()
  for i = seconds, 1, -1 do
    local m = math.floor(i / 60)
    local s = i % 60
    local h = math.floor(m / 60)
    local m = m % 60
    term.write("осталось  ".."Ч: "..h.."  М: "..m.."  С: "..s)
    os.sleep(1)
    term.clearLine()
  end
  term.clear()
end

countdown(120) -- секунды
print("время вышло")

 

 

Изменено пользователем serafim

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кек. Не нужно делать то, что уже написано=D

timestamp = 0

while true do 
	print(os.date("%H:%M:%S", timestamp) --timestamp - любое число в секундах
	timestamp = timestamp + 1 
end
  
>> 00:00:00
timestamp = timestamp + 1
>> 00:00:01
--И так далее...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Норм :)

В print добавь закрывающую скобку.

Эмулятор OCEmu показывает три часа, хотя только открыл, видимо кастыли, щас на роботе гляну

 

Всё норм, спасибо за простую реализацию

Изменено пользователем serafim

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...