Difference between revisions of "Linux datetime"
m (→NIST) |
m (→Epoch time) |
||
Line 29: | Line 29: | ||
$ date -d @$EPOCH +"%F %T %z" | $ date -d @$EPOCH +"%F %T %z" | ||
2010-02-12 19:57:17 -0800 | 2010-02-12 19:57:17 -0800 | ||
+ | </pre> | ||
If you have GNU Awk installed (Ubuntu and Debian systems do not have gawk installed by default) then you can use the following command: | If you have GNU Awk installed (Ubuntu and Debian systems do not have gawk installed by default) then you can use the following command: |
Revision as of 20:45, 12 March 2010
This article covers date and time issues on Linux including epoch time, timezones, hardware and system clock sync, ntpdate, and NTP.
Contents
Epoch time
UNIX Epoch Time is the number of seconds since 00:00:00 1970-01-01 UTC. This is useful for datetime stamps or generating unique names.
The epoch time can be retrieved using the `date` command:
$ date "+%s" 1266033437
Unfortunately, it is not trivial to convert epoch times to a human-readable format in a portable way. The following will work on most Linux systems and is probably the most portable:
$ EPOCH=`date "+%s"` $ echo $EPOCH 1266033437 $ date -d "1970-01-01 UTC $EPOCH seconds" +"%F %T %z" 2010-02-12 19:57:17 -0800
The `date` command in versions of GNU coreutils since 5.3.0 support the @ feature:
$ EPOCH=`date "+%s"` $ echo $EPOCH 1266033437 $ date -d @$EPOCH +"%F %T %z" 2010-02-12 19:57:17 -0800
If you have GNU Awk installed (Ubuntu and Debian systems do not have gawk installed by default) then you can use the following command:
$ EPOCH=`date "+%s"` $ echo $EPOCH 1266033437 $ echo $EPOCH | awk '{print strftime("%F %T %z",$1)}' 2010-02-12 19:57:17 -0800
Supposedly, the following will work on BSD systems (including Mac OS X). Unfortunately it is not portable with the GNU `date` command.
$ EPOCH=`date "+%s"` $ echo $EPOCH 1266033437 $ date -r $EPOCH +"%F %T %z" 2010-02-12 19:57:17 -0800
Set timezone and clock on Linux
1. su to root
2. Find your timezone file under /usr/share/zoneinfo. For example:
/usr/share/zoneinfo/US/Pacific
3. OPTIONAL: backup the current timezone configuration:
cp /etc/localtime /etc/localtime.old
4. Create a symbolic link from the appropiate timezone to /etc/localtime.
ln -sf /usr/share/zoneinfo/US/Pacific /etc/localtime
or
ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
5. Use rdate or ntpdate to set the system time (ntpdate is better):
/usr/sbin/ntpdate time.nist.gov
or
/usr/bin/rdate time.nist.gov
6. Set the hardware clock to the system time:
/sbin/hwclock --systohc
Correct for clock drift
For where its not possible to run ntpd you may use adjtimex to correct for systematic drift.
aptitude install adjtimex
NIST
time.nist.gov
- Pacific time
- http://www.time.gov/timezone.cgi?Pacific/d/-8
Time Sync radio broadcasts
Most consumer "atomic" clocks use WWVB for radio sync. Time signals can also be received through GPS receivers which pickup the time signals broadcast by GPS satellites. Each GPS satellite carries its own atomic clock.
WWVB radio broadcasts of UTC time.
- WWVB, Fort Collins, CO
- 60 kHz (binary carrier signal)
- WWV, Fort Collins, CO
- 2500, 5000, 10000 and 15000 kHz (broadcasts voice)
- WWVH, Kauai, HI
- 2500, 5000, 10000 and 15000 kHz (broadcasts voice)
- CHU, Ottawa, Ontario, Canada
- 3330, 7335 and 14670 kHz (broadcasts voice)
UTC
UTC(GMT) | EDT | EST / CDT | CST / MDT | MST / PDT | PST |
0000 | 8 PM | 7 PM | 6 PM | 5 PM | 4 PM |
0100 | 9 PM | 8 PM | 7 PM | 6 PM | 5 PM |
0200 | 10 PM | 9 PM | 8 PM | 7 PM | 6 PM |
0300 | 11 PM | 10 PM | 9 PM | 8 PM | 7 PM |
0400 | MIDNIGHT | 11 PM | 10 PM | 9 PM | 8 PM |
0500 | 1 AM | MIDNIGHT | 11 PM | 10 PM | 9 PM |
0600 | 2 AM | 1 AM | MIDNIGHT | 11 PM | 10 PM |
0700 | 3 AM | 2 AM | 1 AM | MIDNIGHT | 11 PM |
0800 | 4 AM | 3 AM | 2 AM | 1 AM | MIDNIGHT |
0900 | 5 AM | 4 AM | 3 AM | 2 AM | 1 AM |
1000 | 6 AM | 5 AM | 4 AM | 3 AM | 2 AM |
1100 | 7 AM | 6 AM | 5 AM | 4 AM | 3 AM |
1200 | 8 AM | 7 AM | 6 AM | 5 AM | 4 AM |
1300 | 9 AM | 8 AM | 7 AM | 6 AM | 5 AM |
1400 | 10 AM | 9 AM | 8 AM | 7 AM | 6 AM |
1500 | 11 AM | 10 AM | 9 AM | 8 AM | 7 AM |
1600 | NOON | 11 AM | 10 AM | 9 AM | 8 AM |
1700 | 1 PM | NOON | 11 AM | 10 AM | 9 AM |
1800 | 2 PM | 1 PM | NOON | 11 AM | 10 AM |
1900 | 3 PM | 2 PM | 1 PM | NOON | 11 AM |
2000 | 4 PM | 3 PM | 2 PM | 1 PM | NOON |
2100 | 5 PM | 4 PM | 3 PM | 2 PM | 1 PM |
2200 | 6 PM | 5 PM | 4 PM | 3 PM | 2 PM |
2300 | 7 PM | 6 PM | 5 PM | 4 PM | 3 PM |