FREE!! Download version 2.2 w/source code (67k) FREE!!
peek at the source code...
Welcome to AtomicTime 2.2!
I hope you'll agree that this is the smallest, fastest, and most useful
free Win32 internet time synchronizing program to date. And, of course,
all the source code is available for free.
It synchronizes you computer's built in clock with the clocks of one or
more free time servers on the internet. These time servers are all kept
accurate to within 1 second of coordinated universal time, as maintained
by an atomic clock.
What you need:
- Windows95, 98, ME, ... or WindowsNT 4.0, 2000, XP, ... (with Administrator privileges).
- A connection to the internet that supports TCP sockets and NTP protocol
on port 37.
NOTE - AtomicTime does NOT work with some proxy servers!
- There is no Windows 3.1 version.
The only file you need is AtomicTime.exe. Notice how small it is? 41k!
Put it anywhere on your hard drive. There are NO system components,
no restarting of windows, and there are no .ini files.
Running the program:
Run this one little file whenever you're ready by double clicking on it.
Press the "Correct NOW" button after the program is up and running. After
a minute or so, you should receive data from several time servers on the
internet that provide free time correction services based on a real
atomic clock. You can scroll down the list to see which servers
the program is still waiting on. If there is no response from any
server after twenty seconds, the time data from that server will be
Next, you will be alerted that the program will choose the four best
servers for you. It is unwise to use more than 4 servers, because
takes longer and ties up your internet connection. It also floods the
time servers with unnecessary traffic.
If you do not wish for the interface to come up, and instead want the
simplicity of AtomicTime 1.1, check the CorrectOnLaunch box. The next
time you launch the program, it will correct your time and exit after
ten seconds. Should you wish to change any settings, double click on
the icon in the system tray while it is running, and the main window will
If you do not see any info, something might be wrong with your internet
connection. Try running a web browser. If you can't see web pages, then
your net connection is not working.
If your time server connections are refused, you may be running through a
proxy server. This is a problem. Your internet connection may be blocking
all connections except for basic http style access. No time correction for
you! (until you get a different internet provider)
If the time is off by more than a few minutes, chances are that the time
zone or daylight savings settings are not set right on your system. Double
click on the clock in the task bar, and look at the time zone info tab.
If this is correct, you can manually force a local time offset to fix any
If there is a time correction problem, the icon in the tray will turn into
a yellow exclamation point. Double click on this to see the main window,
and the problem will be in the latency column in the server list.
NOTE - when you log on to NetWare servers, your system clock is usually
synchronized to these servers by the logon process. Most system
administrators do not have the system clock set exactly right, so
you may notice a large correction the instant after you log in.
Local Time Offset:
If you do not agree with the time correction provided, you can offset
the clock by any amount of seconds, minutes, hours, or days. Enter
fields in the Local Time Offset box such as: +1h, or -5m, or +0.2s.
If you would like AtomicTime to take it upon itself to correct the time
for you, move the schedule slider. With the slider all the way to
the left, no automatic correction happens until you press the Correct
NOW button. Should you choose any other setting, AtomicTime will
reload itself every time you restart Windows.
With the scheduler set to "Correct On Startup", the time will be corrected
once every time the computer is restarted. After ten seconds, the
program will exit itself.
The other settings will correct the time at specific intervals. Do not
use any setting less than hourly if you don't need it. It ties up your
internet connection, as well as the remote server's. Daily is typically
a good setting.
Scheduled time corrections do not bring up the display window. Instead,
they add an icon to your system tray near the clock. While the icon is
animating, time correction is being computed. You can double click on
this icon to see the details.
Customizing the server list:
To edit the servers in the list, right click on the server list window.
A context-sensitive menu appears with options. Some options require
that you select one or more servers with the left button first.
Note - you can also use IP numbers for server addresses, such as
The most servers you can have in the list is 64.
You can sort the servers by name, latency, or correction by clicking
on the column headers in the list. The default is to sort by reverse
latency. This puts the slowest servers at the top.
Command Line Arguments:
This version does not use command line arguments like version 1.1.
All the settings are controlled through the user interface window and
saved in the system registry. The arguments 'u' and 's' are reserved
for the program's internal use.
Should you wish to take this program, and all traces of it off of your
machine, got to the Settings, Control Panels, Add/Remove programs section
of Windows, and remove "AtomicTime." If successful, a box will alert
you that you can now delete the AtomicTime files. Press OK, and then
kill all the AtomicTime files with the file explorer.
How Does it work?
It opens connections to port 37 on several servers. What comes back
is the number of seconds since midnight on January 1st, 1900. This
count is about 2 billion. It is normalized to your current time
zone by your networking system.
It samples each sever seven times. Because of the way the internet is,
some of the readings get stuck in transmission. To reduce this effect,
it discards the three slowest responses, and averages the remaining four.
This is how it approximates sub-second accuracy.
The latency you see is the average number of milliseconds for a round
trip to the server. Specifically, it is the time between the
acknowledgement of the connection and the first byte of data received.
The time correction logic compensates by adding half of the round trip
latency on to each suggested time correction.
When all the time deltas are in, it reads the local clock and changes it.
How accurate is it?
All I'm going to say here is less than 1 second. Internally, the
program works entirely in milliseconds, but the port 37 calls it
makes are only accurate to seconds. There is another time protocol
called SNTP that uses UDP connections and is accurate to 10ms or so.
Many internet users, including me, are behind a firewall and cannot
make UDP connections to other servers. This was of no interest to
me. Most PC clocks drift about 2 seconds per day anyway.
If you really need more accuracy, there are other freeware programs
that can do SNTP.
AtomicTime did NOT have a problem with the year 2000. In fact,
everything will work fine until 2036. Please check to see if I'm
still alive that year, and if so, I'll make you an updated version.
You need the Visual C++ 5.0 or later compiler. The 7 files are:
Please Do not ask me basic programming questions, or anything about
Visual C++. This source code is here for people who can use it as-is.
I would be curious to know what you end up doing with it.
- source file
- resource file
- resource include file
- VC++5.0 project
Why not? I made this program for fun, and could care less about trying
to make a few hundred dollars out of it. If you like it, send me email.
Here is more information about me - http://schmail/com/hireme
Come check back here at http://schmail.com/atomictime from time to time.
- Tom Wuttke
This web page was made by hand with a text editor. Damn straight.