Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Why doesn't my time script work?

Basically, I have a ScreenGUI and there's a clock and a date display on it. Whenever I open up my Test, it says on line 51 "Error - Attempt to concatenate local 'weekday' (a nil value)". What's wrong?

This is the script:

local t = tick()
local year = 2000
local month = 1
local day = 1
local Date = "2000.01.01-Sa"
local hour = 0
local mint = 0
local sec = 0
local Time = "00:00:00"
local weekdays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}

function getDateTime()
	local months = {
		{"01",31,31};
		{"02",59,28};
		{"03",90,31};
		{"04",120,30};
		{"05",151,31};
		{"06",181,30};
		{"07",212,31};
		{"08",243,31};
		{"09",273,30};
		{"10",304,31};
		{"11",334,30};
		{"12",365,31};
	}
	local daycount = math.floor(t/86400)-10957
	local weekdaynumber = daycount%7
	local weekday = weekdays[weekdaynumber]
	year = math.floor(daycount/365.25)+2000
	if ((year%4) == 0) then
		months[2][3] = 29
		for i,v in pairs(months) do
			if (i ~= 1) then
				v[2] = (v[2]+1)
			end
		end
	end
	day = math.floor(((daycount)%365.25)+1)
	for i,m in pairs(months) do
		if ((m[2]-m[3]) <= day) then
			month = i
		end
	end
	local m = months[month]
	day = (day+m[3]-m[2])
	year = tostring(year)
	local days = day
	days = tostring((days < 10 and "0" or "") .. days)
	local mnth = months[month][1]
	Date = (year .. "." .. mnth .. "." .. days .. "-" .. weekday)
	local sec = math.floor((t%60))
	local mint = math.floor((t/60)%60)
	local hour = math.floor((t/3600)%24)
	sec = tostring((sec < 10 and "0" or "") .. sec)
	mint = tostring((mint < 10 and "0" or "") .. mint)
	hour = tostring((hour < 10 and "0" or "") .. hour)
	local seconds = (t%60)
	Time = (hour .. ":" .. mint .. ":" .. sec)
end

function display(start)
	if (start) then
		getDateTime()
	end
	script.Parent.Time.Text = Time
	script.Parent.Date.Text = Date
end

function start()
	display(true)
	while (true) do
		t = tick()
		getDateTime()
		display()
		wait()
	end
end

start()

1 answer

I may be wrong but in the script line 10 it says weekdays and in line 51 it says weekday. I think you should try making it weekdays on line 51

This discussion is preserved as it was. New answers, comments, and votes are closed.