Days , hours , minutes and second event timer

Hello , since I’m making live event update to my game , I had one issue . I don’t understand how to make this timer work in this format

But I have this
this is a script that I made for event

local TimeToStop = 1591938000

function liveEvent()
	local bodyForce ="BodyForce")
	bodyForce.Force =,10000,0)
    bodyForce.Parent = game.Workspace.Rocket
bodyForce.Force =, 1143.301, 240.556)

game.Workspace.Rocket.Anchored = false
game.Workspace.Rocket.MeshPart.Flames.ParticleEmitter.Enabled = true

while wait(1) do
	local timeNow = os.time()
	if timeNow >= TimeToStop then
	if timeNow >= TimeToStart then
		print("Starting live event !")
		workspace.EventLiveInfo.SurfaceGui.TextLabel.Text = "Time to Live Event Days:"..(TimeToStart-timeNow/60/60/60).."Hours:"..(TimeToStart-timeNow/60/60).."Minutes:"..(TimeToStart-timeNow/60).."Seconds:"..(TimeToStart-timeNow)

Thank you for reading !

1 Like

Ok, so from what I read, you need a timer in days, hours, minutes, and seconds right? If so, then it needs to be relative. You need to get the amount of time from now to the live event time.

local timeLeft = TimeToStop - os.time() --amount of seconds

Then, you can turn that into readable time. It’s not that easy to use a bunch of for loops for that, so you can do it with each individual seconds amount. I actually made a module for this, so all you have to do using that module is:

for i = timeLeft, 0, -1 do

    tfm:Convert(i) --for example 32:12:02

1 Like

Yes it is but you messed something . I meant make event timer that shows time in days hours minutes and seconds before live show event . The main code starts from here

That’s a code of text that will show the time that playerse need to wait before event . And I don’t know how to make it in Days , hours , minutes , seconds . Anyways thabk you for answer !

For showing it as hours, just divide by 3.600 and modulus by 24. math.floor((TimeToStart-timeNow) / 3600) % 24, so it won’t show values over 24, etc.
Oh, it’s in the BIDMAS order so TimeToStart-timeNow/60/60/60 is actually doing TimeToStart-(((timeNow/60)/60)/60).
Something like this

local days = math.floor((TimeToStart - timeNow) / 86400); -- 86.400 seconds in a day
local hours = math.floor((TimeToStart - timeNow) / 3600) % 24; -- 3.600 in an hour
local minutes = math.floor((TimeToStart - timeNow) / 60) % 60; -- 60 seconds in a minute
local seconds = (TimeStart - timeNow) % 60;

That’s really work thanks but now it doesn’t change time every second / milestone
I changed the text script to this

workspace.EventLiveInfo.SurfaceGui.TextLabel.Text = "Time to Live Event:"..days..":"..hours..":"..minutes..":"..seconds

Maybe run the function everytime the value updated? Something like this:

local function divmod()
	return math.floor(a / b), a % b
local days = TimeToStart - timeNow;
local hours, minutes, seconds;
days, seconds = divmod(days, 60);
days, minutes = divmod(days, 60);
days, hours = divmod(days, 60);
workspace.EventLiveInfo.SurfaceGui.TextLabel.Text = "Time to Live Event:"..days..":"..hours..":"..minutes..":"..seconds;
1 Like

You can use string.format to seperate each one into hours, minutes, and seconds:

local TimeToStop = 86400 --Amount of seconds in one day
function Format(Int)
	return string.format("%02i", Int)
function convertToHMS(Seconds)
	local Minutes = (Seconds - Seconds%60)/60
	Seconds = Seconds - Minutes*60
	local Hours = (Minutes - Minutes%60)/60
	Minutes = Minutes - Hours*60
	return Format(Hours)..":".. Format(Minutes)..":"..Format(Seconds)

print(convertToHMS(TimeToStop)) --Prints 24:00:00
workspace.EventLiveInfo.SurfaceGui.TextLabel.Text = "Time to live event ("..convertToHMS(TimeToStop)..")"

still doesn’t work with this function . Is there any other ways to get it work ?