Website HTML Javascript Clock (Date and Time)


  • This generator allows you to create the Javascript code necessary to put a text clock on your website that can display the current time (and date). The clock keeps updating in real time. Multiple time and date formats to choose from.


  1. Select how you want your clock/calendar to look
  2. Generate the HTML and JavaScript code for your clock (button at bottom)
  3. Preview your clock at the bottom above the code
  4. Copy and Paste the Source Code into your HTML page


  • If you want to change the size, font, or color you can edit the first line of your generated code and add a style="" property like: <div id="clockbox" style="font:14pt Arial; color:#FF0000;"></div>

Text Clock Format
Date Format: Time Format:

Source Code
loading clock preview...


Thank you very much for this code. Only one question. How to put this code in center.

You can add a style attribute to the div tag on the first line:
<div id="clockbox" style="text-align:center;"></div> Other formatting (text font, size, color) can also be added there.

If you want to have the time use a specific timezone, replace: var d=new Date();with:
var tzOffset = -5;//set this to the number of hours offset from UTC

var d=new Date();
var dx=d.toGMTString();
dx=dx.substr(0,dx.length -3);
Setting the tzOffset value to the UTC hours offset your timezone has. If you don't know what value to use, when you go to set your clock in Windows, the timezones listed all show their UTC offset. Like (UTC-05:00) Eastern Time which would be -5.

NOTE: Daylight Savings Time is not automatically taken into account. Meaning Eastern Time is normally tzOffset = -5; but Eastern Time on DST is actually tzOffset = -4; value. Sadly there is no good way to account for DST using only JavaScript.

To get around the Daylight Savings Time bug above, you can use PHP to use the server to calculate the timezone offset and automatically adjust for DST if necessary. However, this does require that the server/page supports PHP (if you aren't sure, it probably does not support PHP).

If you have PHP, replace: var d=new Date();with:
var d=new Date();
var dx=d.toGMTString();
dx=dx.substr(0,dx.length -3);
d.setSeconds(d.getSeconds() + <?php date_default_timezone_set('America/New_York'); echo date('Z'); ?>);
where 'America/New_York' is the timezone you want to use.
List of Supported Timezones

You need to use PHP/Javascript to figure out the time difference between the server and the browser then adjust the new Date() accordingly.

For anyone wanting to do this in PHP, replace:
<script type="text/javascript">with:

<script type="text/javascript">
var offset = Math.round(new Date().getTime() / 1000);

and replace
var d=new Date();with:
var d=new Date();
d.setSeconds(d.getSeconds() + <?php echo time(); ?> - offset);

var tday=["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"];
var tmonth=["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];

To display the same clock in multiple locations, look for the line: document.getElementById('clockbox').innerHTML=clocktext; and change it to
var obj=document.querySelectorAll('.clockbox');
for(var i in obj){
Then use <div class="clockbox"></div> anywhere on the page you want the clock to appear (note that it changed from id="" to class="" attribute)

Is the any way you could add st, nd, rd, th after the date. i.e. 1st and in Superscript

You can add either of the following blocks:

else if(ndate%10==1){ndate+="st";}
else if(ndate%10==2){ndate+="nd";}
else if(ndate%10==3){ndate+="rd";}
or alternately with superscript, it would look like
else if(ndate%10==1){ndate+="<sup>st</sup>";}
else if(ndate%10==2){ndate+="<sup>nd</sup>";}
else if(ndate%10==3){ndate+="<sup>rd</sup>";}

Add either of those blocks right before the line that starts with

var clocktext=

Can clock code be created that will display 1/10 & 1/100th seconds:


d.getMilliseconds() will display the value you want. So in the var clocktext= line, add d.getMilliseconds() like:
var clocktext=""+nhour+":"+nmin+":"+nsec+"."+d.getMilliseconds()+"";

You will also need to change your clock to update more often than the default: once every 1000 milliseconds (once per second). Change the update interval to something like 25 milliseconds: setInterval(GetClock,25);

Is their a way to display the UTC + _ at the end of the time?

In javascript getTimezoneOffset() will display the current system's time-zone offset in minutes. So with an unmodified version of my script, you'd use
(d.getTimezoneOffset()/60) where you want it to display the amount. So depending on your clock, something like
var clocktext=""+nhour+":"+nmin+":"+nsec+" UTC "+(d.getTimezoneOffset()/60);

If instead you're using my Timezone offset modification, that fudges the timezone and getTimezoneOffset() will still (incorrectly) display your actual system's time-zone offset. With that modification, just print the value of tzOffset. Something like:

var clocktext=""+nhour+":"+nmin+":"+nsec+ap+" UTC "+(tzOffset>=0?"+":"")+tzOffset;

I also added some code to add a "+" symbol before the number if the tzOffset >= 0

You can edit the clocktext="" line to add HTML. Like:

var clocktext="<span style=\"font:14pt Arial; color:#FF00FF;\">"+tday[nday]+", "+tmonth[nmonth]+" "+ndate+", "+nyear+"</span> <span style=\"font:14pt Arial; color:#FF0000;\">"+nhour+":"+nmin+":"+nsec+ap+"</span>";

Note 1: Your display settings might be different depending on which date/time format you chose.
Note 2: Any occurrence of " (quote) in your HTML must be escaped like \" (backslash quote) otherwise you will get Javascript errors.

The best way would be to make the colon color the same color as the background color every other second. Try replacing the line that starts with
var clocktext=
line with this conditional one:
// if first half of second, hide colons by making them white
var clocktext=""+tday[nday]+", "+tmonth[nmonth]+" "+ndate+", "+nyear+" "+nhour+"<span style='color:white'>:</span>"+nmin+"<span style='color:white'>:</span>"+nsec+ap+"";
// top half of second, display original line
var clocktext=""+tday[nday]+", "+tmonth[nmonth]+" "+ndate+", "+nyear+" "+nhour+":"+nmin+":"+nsec+ap+"";
Note that your clocktext line might be different depending on your display options. You'll also want to make your clock update more than every 1000 milliseconds (once per second). Change the update interval to something like 250 milliseconds:

IMHO it's better to use the style 'visibility:hidden'; it's independent of background color.

Just an FYI: nice code. Because I don't use seconds, I changed the refresh interval
from 1 to 60sec for a bit better performance. Tho this means the clock can be off by
up to 60 seconds, I feel that it isn't that noticable. Comments? Thankx...

Changing the setInterval() value to update at a slower rate is perfectly fine.

Any modern browser can handle JavaScript and rendering changes very efficiently though. Updating a text value once per second is almost nothing in terms of computing power.

If you want to play with it, pull up the developer console in your browser and go to the Performance tab. You can use that to break down how long each little part takes and what the browser spends that time doing.

Is there a way to integrate the clock into a responsive html web page using Bootstrap, perhaps with some sort of absolute positioning and scaling so the clock will stay in one location of the page and scale up or down in size based on the device screen size?

You can use any of the bootstrap Components or Utilities like position on the clockbox:
<div id="clockbox"></div>
<div id="clockbox" class="position-fixed"></div>