Запуск второго цикла while только после завершения первого - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь написать функцию, которая переводит оставшиеся секунды в удобочитаемый формат.Проблема, с которой я сталкиваюсь (я думаю), заключается в том, что мой второй цикл while пытается выполнить свою работу до завершения первого.В итоге я получу «1 час, 271 минуту и ​​37 секунд. В моей последней попытке я попытался использовать minNeeded, но это также не работает, потому что он проверяет свое существование до завершения первого цикла. Как я могусправиться с этим?

function prettyTime(secs)

    local hr = 0
    local hrDisplay = ''
    local min = 0
    local minDislplay = ''
    local minNeeded = 0

    if(secs >= 3600) then
        while secs >= 3600 do
            secs = secs - 3600
            hr = hr + 1
            if secs < 3600 then
                secsRemaining = secs
                minNeeded = 1
            end
        end
    else
        minNeeded = 1
    end
    while true do
        if(minNeeded == 1){
            while secsRemaining >= 60 do
                secsRemaining = secsRemaining - 60
                min = min + 1
            end
        end
    end

    if hr > 1 then
        hrDisplay = hr .. ' hours, '
    elseif hr == 1 then
        hrDisplay = '1 hour, '
    end
    if min > 1 then
        minDisplay = min .. ' minutes and '
    elseif min == 1 then
        minDisplay = '1 minute and '
    else
        minDisplay = ''
    end

    return hrDisplay .. minDisplay .. secs .. ' seconds'

end

1 Ответ

0 голосов
/ 08 октября 2018

в вашем коде мало ошибок, if(minNeeded == 1){ - синтаксическая ошибка, while true do никогда не сломается.Вот простой конвертер,

function prettyTime(sec)
  local sec = tonumber(sec)
  if sec <= 0 then
    return "00.00.00";
  else
    h = tonumber(string.format("%02.f", math.floor(sec/3600)))
    m = tonumber(string.format("%02.f", math.floor(sec/60 - (h*60))))
    s = tonumber(string.format("%02.f", math.floor(sec - h*3600 - m*60)))
    -- return h.."."..m.."."..s
  end

    local res = ''
    if h == 1 then
        res = res ..h .. ' hour, '
    elseif h > 1 then
        res = res ..h .. ' hours, '
    end

    if m <= 1 then
        res = res ..m .. ' minute, '
    elseif m > 1 then
        res = res ..m .. ' minute, '
    end

    if s <= 1 then
        res = res ..s .. ' second, '
    elseif s > 1 then
        res = res ..s .. ' seconds '
    end
  return res
end

print(prettyTime(3670)) -- 1 hour, 1 minute, 10 seconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...