See the time
To see the time on a Debian GNU/Linux system, use the command date, without arguments it will show system time respecting the currently defined timezone.
To see the time in the UTC timezone, use the command date --utc (or shorthand date -u).
Set the time manually
When setting the system time manually using date directly, the required time specification format may be confusing (by POSIX convention has to be MMDDhhmmYYYY). However, when using the --set argument date accepts the date and time in many formats. You can read the man page of date, or use the example below for one possible and very useful format. The --set argument examples below is specified in the ISO 8601 standard's extended format as YYYY-MM-DD for Year-Month-DayOfMonth, and time of day HH:MM:SS using 24 hour clock. Leading zeros are significant.
date --set 1998-11-02 date --set 21:08:00
The above two commands set the system date to second of November, 1998, and system time to eight minutes past nine, PM.
Note, using the date command only sets the runtime system time (aka. software clock) but has no effect on the underlying hardware clock (aka. RTC = real time clock). When the system boots, it has no concept of absolute time and will populate the system time with the date and time read from the hardware clock, thus to ensure that the time set using date is kept across reboots it has to be saved to the hardware clock.
Setting the hardware clock
To write the current system time to the hardware clock so that it can be recovered on subsequent restarts of the system, correct the system time as above, then use the command hwclock --hctosys to save it to hardware (see man hwclock for more options).
Modern Debian releases (2.2 and onwards) automatically saves the system time to hardware clock on proper shutdowns, and sets the system clock from hardware clock when it boots up. This is done by the script /etc/init.d/hwclock.sh.
Set the time automatically
The protocol used to set the time is the Network Time Protocol or NTP. To set the time automatically you need access to an NTP server. Your local network may provide such a server but most people need to access an NTP server via the internet.
On the internet there are time servers that provide the correct time. Your ISP may provide a time service and this would be your closest and probably most accurate source. While there are still many independent NTP servers you can connect to, the best source is http://pool.ntp.org.
It's really quite easy on Debian.
apt-get install ntp
Because the pool is global, you should adjust
to use more local sources. Change the
where XX is your continent or two letter country code. Click on the continent to see the valid country codes. eg CA for Canada etc.
For increased accuracy you would include extra server lines such as
incrementing the number for each line. Two or three should be all you need.
Hardware clock and system time when dual booting
While Debian prefer to keep the hardware clock in UTC (this prevents the need to change it on daylight savings and timezone changes) other systems (like Windows) by default keeps the hardware clock synchronized to local time. To keep the hardware clock sane and the time correctly displayed by multiple systems they need to agree on which timezone the hardware clock is kept at.
In Debian the timezone for the hardware clock is configured in the file /etc/adjtime;
0.000000 14602224559 0.000000 1460224559 UTC
Change "UTC" to "LOCAL" if you want the hardware clock to be kept at local time instead of UTC.