Date and clock script help

Need help making date & clock script for my game, that’s what i need.

I also put Day/Night cycle to my game & i only need the date & clock.

I’m presuming that you want a GUI in game for telling you the time.
The Lighting service has a property called TimeOfDay that returns a formatted string based on the time of day in game.
Using this, you can set the text of a TextLabel GUI to have the time of day in your game.

For example:

-- Inside a LocalScript inside a TextLabel
local Lighting = game:GetService("Lighting")

task.spawn(function()
    -- I like wrapping while loops inside new threads
    script.Parent.Text = Lighting.TimeOfDay
    
    task.wait(1)
end)

-- Now the TextLabel will update every second.

If you want the date, that’s a bit harder to make, but not impossible, if you’re doing it in game, or using the real time. Both ways will make use of os.date().

To make it use the real date, it’s very simple. Just use:

-- Assuming it's another text label with the date

task.spawn(function()
    script.Parent.Text = os.date("%b %d, %Y")
    
    task.wait(1)
end)

As per formatting, since os.date() accepts a string to format it properly (I’ve formatted it like you wanted, based on your picture), here’s a list of formatting codes for os.date():

%a - abbreviated weekday name (e.g., Wed)
%A - full weekday name (e.g., Wednesday)
%b - abbreviated month name (e.g., Sep)
%B - full month name (e.g., September)
%c - date and time (e.g., 09/16/98 23:48:10)
%d - day of the month (16) [01-31]
%H - hour, using a 24-hour clock (23) [00-23]
%I - hour, using a 12-hour clock (11) [01-12]
%M - minute (48) [00-59]
%m - month (09) [01-12]
%p - either "am" or "pm" (pm)
%S - second (10) [00-61]
%w - weekday (3) [0-6 = Sunday-Saturday]
%x - date (e.g., 09/16/98)
%X - time (e.g., 23:48:10)
%Y - full year (1998)
%y - two-digit year (98) [00-99]
%% - the character %

As for in game dates, what you can do is pass a second argument to os.date(), which is the given time. By default, it uses os.time(), which returns the current time as a Unix timestamp. By passing your own, which is really any large number, you can make any date you want (as long as it’s after 01/01/1970).

Just keep track of a number, and add one to it every second, then calculate the date based off that.

For example:

local Time = 1240909871 -- use a date to timestamp converter to get your number

task.spawn(function()
    Time += 1
    script.Parent.Text = os.date("%b %d, %Y", Time)
    
    task.wait(1)
end)

This should help to get you on track. If you have any questions, please ask!

6 Likes

thanks i really need this, but my game’s a lot of messy stuffs, but i really need that.

the date starts at 9/12/2007 as the progress date.

how do i change date and time? is it possible?

maybe that will work i guess???