Import of original zoneinfo code and database - tzcode
old-tzcode-32-bit-output and tzdata2007d.
This commit is contained in:
parent
5596ab1ec7
commit
3b2c65e323
64 changed files with 27357 additions and 0 deletions
424
commands/zoneinfo/Makefile
Normal file
424
commands/zoneinfo/Makefile
Normal file
|
@ -0,0 +1,424 @@
|
|||
# @(#)Makefile 7.109
|
||||
|
||||
# Change the line below for your time zone (after finding the zone you want in
|
||||
# the time zone files, or adding it to a time zone file).
|
||||
# Alternately, if you discover you've got the wrong time zone, you can just
|
||||
# zic -l rightzone
|
||||
# to correct things.
|
||||
# Use the command
|
||||
# make zonenames
|
||||
# to get a list of the values you can use for LOCALTIME.
|
||||
|
||||
LOCALTIME= Factory
|
||||
|
||||
# If you want something other than Eastern United States time as a template
|
||||
# for handling POSIX-style time zone environment variables,
|
||||
# change the line below (after finding the zone you want in the
|
||||
# time zone files, or adding it to a time zone file).
|
||||
# (When a POSIX-style environment variable is handled, the rules in the
|
||||
# template file are used to determine "spring forward" and "fall back" days and
|
||||
# times; the environment variable itself specifies UTC offsets of standard and
|
||||
# summer time.)
|
||||
# Alternately, if you discover you've got the wrong time zone, you can just
|
||||
# zic -p rightzone
|
||||
# to correct things.
|
||||
# Use the command
|
||||
# make zonenames
|
||||
# to get a list of the values you can use for POSIXRULES.
|
||||
# If you want POSIX compatibility, use "America/New_York".
|
||||
|
||||
POSIXRULES= America/New_York
|
||||
|
||||
# Also see TZDEFRULESTRING below, which takes effect only
|
||||
# if the time zone files cannot be accessed.
|
||||
|
||||
# Everything gets put in subdirectories of. . .
|
||||
|
||||
TOPDIR= /usr/local
|
||||
|
||||
# "Compiled" time zone information is placed in the "TZDIR" directory
|
||||
# (and subdirectories).
|
||||
# Use an absolute path name for TZDIR unless you're just testing the software.
|
||||
|
||||
TZDIR= $(TOPDIR)/etc/zoneinfo
|
||||
|
||||
# The "tzselect", "zic", and "zdump" commands get installed in. . .
|
||||
|
||||
ETCDIR= $(TOPDIR)/etc
|
||||
|
||||
# If you "make INSTALL", the "date" command gets installed in. . .
|
||||
|
||||
BINDIR= $(TOPDIR)/bin
|
||||
|
||||
# Manual pages go in subdirectories of. . .
|
||||
|
||||
MANDIR= $(TOPDIR)/man
|
||||
|
||||
# Library functions are put in an archive in LIBDIR.
|
||||
|
||||
LIBDIR= $(TOPDIR)/lib
|
||||
TZLIB= $(LIBDIR)/libtz.a
|
||||
|
||||
# If you always want time values interpreted as "seconds since the epoch
|
||||
# (not counting leap seconds)", use
|
||||
# REDO= posix_only
|
||||
# below. If you always want right time values interpreted as "seconds since
|
||||
# the epoch" (counting leap seconds)", use
|
||||
# REDO= right_only
|
||||
# below. If you want both sets of data available, with leap seconds not
|
||||
# counted normally, use
|
||||
# REDO= posix_right
|
||||
# below. If you want both sets of data available, with leap seconds counted
|
||||
# normally, use
|
||||
# REDO= right_posix
|
||||
# below.
|
||||
# POSIX mandates that leap seconds not be counted; for compatibility with it,
|
||||
# use either "posix_only" or "posix_right".
|
||||
|
||||
REDO= posix_right
|
||||
|
||||
# Since "." may not be in PATH...
|
||||
|
||||
YEARISTYPE= ./yearistype
|
||||
|
||||
# Non-default libraries needed to link.
|
||||
# Add -lintl if you want to use `gettext' on Solaris.
|
||||
LDLIBS=
|
||||
|
||||
# Add the following to the end of the "CFLAGS=" line as needed.
|
||||
# -Dconst= if `const' does not work (SunOS 4.x cc, OSF1 V5.0 cc)
|
||||
# -DHAVE_ADJTIME=0 if `adjtime' does not exist (SVR0?)
|
||||
# -DHAVE_GETTEXT=1 if `gettext' works (GNU, Linux, Solaris); also see LDLIBS
|
||||
# -DHAVE_INCOMPATIBLE_CTIME_R=1 if your system's time.h declares
|
||||
# ctime_r and asctime_r incompatibly with the POSIX standard (Solaris 8).
|
||||
# -DHAVE_SETTIMEOFDAY=0 if settimeofday does not exist (SVR0?)
|
||||
# -DHAVE_SETTIMEOFDAY=1 if settimeofday has just 1 arg (SVR4)
|
||||
# -DHAVE_SETTIMEOFDAY=2 if settimeofday uses 2nd arg (4.3BSD)
|
||||
# -DHAVE_SETTIMEOFDAY=3 if settimeofday ignores 2nd arg (4.4BSD)
|
||||
# -DHAVE_STRERROR=0 if your system lacks the strerror function
|
||||
# -DHAVE_SYMLINK=0 if your system lacks the symlink function
|
||||
# -DHAVE_SYS_STAT_H=0 if your compiler lacks a "sys/stat.h"
|
||||
# -DHAVE_SYS_WAIT_H=0 if your compiler lacks a "sys/wait.h"
|
||||
# -DLOCALE_HOME=\"path\" if locales are in "path", not "/usr/lib/locale"
|
||||
# -DHAVE_UNISTD_H=0 if your compiler lacks a "unistd.h" (Microsoft C++ 7?)
|
||||
# -DHAVE_UTMPX_H=1 if your compiler has a "utmpx.h"
|
||||
# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
|
||||
# DST transitions if the time zone files cannot be accessed
|
||||
# -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
|
||||
# -TTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
|
||||
# the default is system-supplied, typically "/usr/lib/locale"
|
||||
# $(GCC_DEBUG_FLAGS) if you are using GCC and want lots of checking
|
||||
# -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU=1
|
||||
# if you do not want run time warnings about formats that may cause
|
||||
# year 2000 grief
|
||||
# -DZIC_MAX_ABBR_LEN_WO_WARN=3
|
||||
# (or some other number) to set the maximum time zone abbreviation length
|
||||
# that zic will accept without a warning (the default is 6)
|
||||
GCC_DEBUG_FLAGS = -Dlint -g -O -fno-common \
|
||||
-Wall -Wcast-qual -Wconversion -Wmissing-prototypes \
|
||||
-Wnested-externs -Wpointer-arith -Wshadow \
|
||||
-Wtraditional # -Wstrict-prototypes -Wwrite-strings
|
||||
#
|
||||
# If you want to use System V compatibility code, add
|
||||
# -DUSG_COMPAT
|
||||
# to the end of the "CFLAGS=" line. This arrange for "timezone" and "daylight"
|
||||
# variables to be kept up-to-date by the time conversion functions. Neither
|
||||
# "timezone" nor "daylight" is described in X3J11's work.
|
||||
#
|
||||
# If your system has a "GMT offset" field in its "struct tm"s
|
||||
# (or if you decide to add such a field in your system's "time.h" file),
|
||||
# add the name to a define such as
|
||||
# -DTM_GMTOFF=tm_gmtoff
|
||||
# or
|
||||
# -DTM_GMTOFF=_tm_gmtoff
|
||||
# to the end of the "CFLAGS=" line.
|
||||
# Neither tm_gmtoff nor _tm_gmtoff is described in X3J11's work;
|
||||
# in its work, use of "tm_gmtoff" is described as non-conforming.
|
||||
# Both Linux and BSD have done the equivalent of defining TM_GMTOFF in
|
||||
# their recent releases.
|
||||
#
|
||||
# If your system has a "zone abbreviation" field in its "struct tm"s
|
||||
# (or if you decide to add such a field in your system's "time.h" file),
|
||||
# add the name to a define such as
|
||||
# -DTM_ZONE=tm_zone
|
||||
# or
|
||||
# -DTM_ZONE=_tm_zone
|
||||
# to the end of the "CFLAGS=" line.
|
||||
# Neither tm_zone nor _tm_zone is described in X3J11's work;
|
||||
# in its work, use of "tm_zone" is described as non-conforming.
|
||||
# Both UCB and Sun have done the equivalent of defining TM_ZONE in
|
||||
# their recent releases.
|
||||
#
|
||||
# If you want functions that were inspired by early versions of X3J11's work,
|
||||
# add
|
||||
# -DSTD_INSPIRED
|
||||
# to the end of the "CFLAGS=" line. This arranges for the functions
|
||||
# "tzsetwall", "offtime", "timelocal", "timegm", "timeoff",
|
||||
# "posix2time", and "time2posix" to be added to the time conversion library.
|
||||
# "tzsetwall" is like "tzset" except that it arranges for local wall clock
|
||||
# time (rather than the time specified in the TZ environment variable)
|
||||
# to be used.
|
||||
# "offtime" is like "gmtime" except that it accepts a second (long) argument
|
||||
# that gives an offset to add to the time_t when converting it.
|
||||
# "timelocal" is equivalent to "mktime".
|
||||
# "timegm" is like "timelocal" except that it turns a struct tm into
|
||||
# a time_t using UTC (rather than local time as "timelocal" does).
|
||||
# "timeoff" is like "timegm" except that it accepts a second (long) argument
|
||||
# that gives an offset to use when converting to a time_t.
|
||||
# "posix2time" and "time2posix" are described in an included manual page.
|
||||
# X3J11's work does not describe any of these functions.
|
||||
# Sun has provided "tzsetwall", "timelocal", and "timegm" in SunOS 4.0.
|
||||
# These functions may well disappear in future releases of the time
|
||||
# conversion package.
|
||||
#
|
||||
# If you want Source Code Control System ID's left out of object modules, add
|
||||
# -DNOID
|
||||
# to the end of the "CFLAGS=" line.
|
||||
#
|
||||
# If you'll never want to handle solar-time-based time zones, add
|
||||
# -DNOSOLAR
|
||||
# to the end of the "CFLAGS=" line
|
||||
# (and comment out the "SDATA=" line below).
|
||||
# This reduces (slightly) the run-time data-space requirements of
|
||||
# the time conversion functions; it may reduce the acceptability of your system
|
||||
# to folks in oil- and cash-rich places.
|
||||
#
|
||||
# If you want to allocate state structures in localtime, add
|
||||
# -DALL_STATE
|
||||
# to the end of the "CFLAGS=" line. Storage is obtained by calling malloc.
|
||||
#
|
||||
# If you want an "altzone" variable (a la System V Release 3.1), add
|
||||
# -DALTZONE
|
||||
# to the end of the "CFLAGS=" line.
|
||||
# This variable is not described in X3J11's work.
|
||||
#
|
||||
# If you want a "gtime" function (a la MACH), add
|
||||
# -DCMUCS
|
||||
# to the end of the "CFLAGS=" line
|
||||
# This function is not described in X3J11's work.
|
||||
#
|
||||
# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
|
||||
# out by the National Institute of Standards and Technology
|
||||
# which claims to test C and Posix conformance. If you want to pass PCTS, add
|
||||
# -DPCTS
|
||||
# to the end of the "CFLAGS=" line.
|
||||
#
|
||||
# If you want strict compliance with XPG4 as of 1994-04-09, add
|
||||
# -DXPG4_1994_04_09
|
||||
# to the end of the "CFLAGS=" line. This causes "strftime" to always return
|
||||
# 53 as a week number (rather than 52 or 53) for those days in January that
|
||||
# before the first Monday in January when a "%V" format is used and January 1
|
||||
# falls on a Friday, Saturday, or Sunday.
|
||||
|
||||
CFLAGS=
|
||||
|
||||
# If you want zic's -s option used when installing, uncomment the next line
|
||||
# ZFLAGS= -s
|
||||
|
||||
zic= ./zic
|
||||
ZIC= $(zic) $(ZFLAGS)
|
||||
|
||||
# The name of a Posix-compliant `awk' on your system.
|
||||
AWK= nawk
|
||||
|
||||
# The path where SGML DTDs are kept.
|
||||
SGML_SEARCH_PATH= $(TOPDIR)/share/doc/sgml-lib/REC-xhtml1-20000126/
|
||||
|
||||
# The catalog file(s) to use when validating XHTML.
|
||||
SGML_CATALOG_FILES= xhtml.soc
|
||||
|
||||
# The name, arguments and environment of a program to validate your web pages.
|
||||
# See <http://www.jclark.com/sp/> for a validator, and
|
||||
# <http://validator.w3.org/source/> for a validation library.
|
||||
VALIDATE = nsgmls
|
||||
VALIDATE_FLAGS = -s -B -wall -wno-unused-param -wxml
|
||||
VALIDATE_ENV = \
|
||||
SGML_CATALOG_FILES=$(SGML_CATALOG_FILES) \
|
||||
SGML_SEARCH_PATH=$(SGML_SEARCH_PATH) \
|
||||
SP_CHARSET_FIXED=YES \
|
||||
SP_ENCODING=UTF-8
|
||||
|
||||
###############################################################################
|
||||
|
||||
cc= cc
|
||||
CC= $(cc) -DTZDIR=\"$(TZDIR)\"
|
||||
|
||||
TZCSRCS= zic.c localtime.c asctime.c scheck.c ialloc.c
|
||||
TZCOBJS= zic.o localtime.o asctime.o scheck.o ialloc.o
|
||||
TZDSRCS= zdump.c localtime.c ialloc.c
|
||||
TZDOBJS= zdump.o localtime.o ialloc.o
|
||||
DATESRCS= date.c localtime.c logwtmp.c strftime.c asctime.c
|
||||
DATEOBJS= date.o localtime.o logwtmp.o strftime.o asctime.o
|
||||
LIBSRCS= localtime.c asctime.c difftime.c
|
||||
LIBOBJS= localtime.o asctime.o difftime.o
|
||||
HEADERS= tzfile.h private.h
|
||||
NONLIBSRCS= zic.c zdump.c scheck.c ialloc.c
|
||||
NEWUCBSRCS= date.c logwtmp.c strftime.c
|
||||
SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh
|
||||
MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
|
||||
tzfile.5 tzselect.8 zic.8 zdump.8
|
||||
DOCS= README Theory $(MANS) date.1 Makefile
|
||||
PRIMARY_YDATA= africa antarctica asia australasia \
|
||||
europe northamerica southamerica
|
||||
YDATA= $(PRIMARY_YDATA) pacificnew etcetera factory backward
|
||||
NDATA= systemv
|
||||
SDATA= solar87 solar88 solar89
|
||||
TDATA= $(YDATA) $(NDATA) $(SDATA)
|
||||
TABDATA= iso3166.tab zone.tab
|
||||
DATA= $(YDATA) $(NDATA) $(SDATA) $(TABDATA) leapseconds yearistype.sh
|
||||
WEB_PAGES= tz-art.htm tz-link.htm
|
||||
MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \
|
||||
itca.jpg $(WEB_PAGES) checktab.awk workman.sh
|
||||
ENCHILADA= $(DOCS) $(SOURCES) $(DATA) $(MISC)
|
||||
|
||||
# And for the benefit of csh users on systems that assume the user
|
||||
# shell should be used to handle commands in Makefiles. . .
|
||||
|
||||
SHELL= /bin/sh
|
||||
|
||||
all: tzselect zic zdump $(LIBOBJS)
|
||||
|
||||
ALL: all date
|
||||
|
||||
install: all $(DATA) $(REDO) $(TZLIB) $(MANS) $(TABDATA)
|
||||
$(ZIC) -y $(YEARISTYPE) \
|
||||
-d $(TZDIR) -l $(LOCALTIME) -p $(POSIXRULES)
|
||||
-rm -f $(TZDIR)/iso3166.tab $(TZDIR)/zone.tab
|
||||
cp iso3166.tab zone.tab $(TZDIR)/.
|
||||
-mkdir $(TOPDIR) $(ETCDIR)
|
||||
cp tzselect zic zdump $(ETCDIR)/.
|
||||
-mkdir $(TOPDIR) $(MANDIR) \
|
||||
$(MANDIR)/man3 $(MANDIR)/man5 $(MANDIR)/man8
|
||||
-rm -f $(MANDIR)/man3/newctime.3 \
|
||||
$(MANDIR)/man3/newtzset.3 \
|
||||
$(MANDIR)/man5/tzfile.5 \
|
||||
$(MANDIR)/man8/tzselect.8 \
|
||||
$(MANDIR)/man8/zdump.8 \
|
||||
$(MANDIR)/man8/zic.8
|
||||
cp newctime.3 newtzset.3 $(MANDIR)/man3/.
|
||||
cp tzfile.5 $(MANDIR)/man5/.
|
||||
cp tzselect.8 zdump.8 zic.8 $(MANDIR)/man8/.
|
||||
|
||||
INSTALL: ALL install date.1
|
||||
-mkdir $(TOPDIR) $(BINDIR)
|
||||
cp date $(BINDIR)/.
|
||||
-mkdir $(TOPDIR) $(MANDIR) $(MANDIR)/man1
|
||||
-rm -f $(MANDIR)/man1/date.1
|
||||
cp date.1 $(MANDIR)/man1/.
|
||||
|
||||
zdump: $(TZDOBJS)
|
||||
$(CC) $(CFLAGS) $(LFLAGS) $(TZDOBJS) $(LDLIBS) -o $@
|
||||
|
||||
zic: $(TZCOBJS) yearistype
|
||||
$(CC) $(CFLAGS) $(LFLAGS) $(TZCOBJS) $(LDLIBS) -o $@
|
||||
|
||||
yearistype: yearistype.sh
|
||||
cp yearistype.sh yearistype
|
||||
chmod +x yearistype
|
||||
|
||||
posix_only: zic $(TDATA)
|
||||
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L /dev/null $(TDATA)
|
||||
|
||||
right_only: zic leapseconds $(TDATA)
|
||||
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L leapseconds $(TDATA)
|
||||
|
||||
# In earlier versions of this makefile, the other two directories were
|
||||
# subdirectories of $(TZDIR). However, this led to configuration errors.
|
||||
# For example, with posix_right under the earlier scheme,
|
||||
# TZ='right/Australia/Adelaide' got you localtime with leap seconds,
|
||||
# but gmtime without leap seconds, which led to problems with applications
|
||||
# like sendmail that subtract gmtime from localtime.
|
||||
# Therefore, the other two directories are now siblings of $(TZDIR).
|
||||
# You must replace all of $(TZDIR) to switch from not using leap seconds
|
||||
# to using them, or vice versa.
|
||||
other_two: zic leapseconds $(TDATA)
|
||||
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR)-posix -L /dev/null $(TDATA)
|
||||
$(ZIC) -y $(YEARISTYPE) \
|
||||
-d $(TZDIR)-leaps -L leapseconds $(TDATA)
|
||||
|
||||
posix_right: posix_only other_two
|
||||
|
||||
right_posix: right_only other_two
|
||||
|
||||
zones: $(REDO)
|
||||
|
||||
$(TZLIB): $(LIBOBJS)
|
||||
-mkdir $(TOPDIR) $(LIBDIR)
|
||||
ar ru $@ $(LIBOBJS)
|
||||
if [ -x /usr/ucb/ranlib -o -x /usr/bin/ranlib ] ; \
|
||||
then ranlib $@ ; fi
|
||||
|
||||
# We use the system's logwtmp in preference to ours if available.
|
||||
|
||||
date: $(DATEOBJS)
|
||||
ar r ,lib.a logwtmp.o
|
||||
if [ -x /usr/ucb/ranlib -o -x /usr/bin/ranlib ] ; \
|
||||
then ranlib ,lib.a ; fi
|
||||
$(CC) $(CFLAGS) date.o localtime.o asctime.o strftime.o \
|
||||
$(LDLIBS) -lc ,lib.a -o $@
|
||||
rm -f ,lib.a
|
||||
|
||||
tzselect: tzselect.ksh
|
||||
sed \
|
||||
-e 's|AWK=[^}]*|AWK=$(AWK)|g' \
|
||||
-e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
|
||||
<$? >$@
|
||||
chmod +x $@
|
||||
|
||||
check: check_tables check_web
|
||||
|
||||
check_tables: checktab.awk $(PRIMARY_YDATA)
|
||||
$(AWK) -f checktab.awk $(PRIMARY_YDATA)
|
||||
|
||||
check_web: $(WEB_PAGES)
|
||||
$(VALIDATE_ENV) $(VALIDATE) $(VALIDATE_FLAGS) $(WEB_PAGES)
|
||||
|
||||
clean:
|
||||
rm -f core *.o *.out tzselect zdump zic yearistype date
|
||||
|
||||
maintainer-clean: clean
|
||||
@echo 'This command is intended for maintainers to use; it'
|
||||
@echo 'deletes files that may need special tools to rebuild.'
|
||||
rm -f *.[1-8].txt tzcode.tar.gz tzdata.tar.gz
|
||||
|
||||
names:
|
||||
@echo $(ENCHILADA)
|
||||
|
||||
# The zics below ensure that each data file can stand on its own.
|
||||
# We also do an all-files run to catch links to links.
|
||||
|
||||
public: $(ENCHILADA)
|
||||
make maintainer-clean
|
||||
make "CFLAGS=$(GCC_DEBUG_FLAGS)"
|
||||
-mkdir /tmp/,tzpublic
|
||||
-for i in $(TDATA) ; do zic -v -d /tmp/,tzpublic $$i 2>&1 | grep -v "starting year" ; done
|
||||
for i in $(TDATA) ; do zic -d /tmp/,tzpublic $$i || exit; done
|
||||
zic -v -d /tmp/,tzpublic $(TDATA) || exit
|
||||
rm -f -r /tmp/,tzpublic
|
||||
for i in *.[1-8] ; do sh workman.sh $$i > $$i.txt || exit; done
|
||||
$(AWK) -f checktab.awk $(PRIMARY_YDATA)
|
||||
tar cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | gzip -9 > tzcode.tar.gz
|
||||
tar cf - $(DATA) | gzip -9 > tzdata.tar.gz
|
||||
|
||||
typecheck:
|
||||
make clean
|
||||
for i in "long long" unsigned double; \
|
||||
do \
|
||||
make CFLAGS="-DTYPECHECK -D_TIME_T \"-Dtime_t=$$i\"" ; \
|
||||
./zdump -v Europe/Rome ; \
|
||||
make clean ; \
|
||||
done
|
||||
|
||||
zonenames: $(TDATA)
|
||||
@$(AWK) '/^Zone/ { print $$2 } /^Link/ { print $$3 }' $(TDATA)
|
||||
|
||||
asctime.o: private.h tzfile.h
|
||||
date.o: private.h
|
||||
difftime.o: private.h
|
||||
ialloc.o: private.h
|
||||
localtime.o: private.h tzfile.h
|
||||
scheck.o: private.h
|
||||
strftime.o: tzfile.h
|
||||
zic.o: private.h tzfile.h
|
||||
|
||||
.KEEP_STATE:
|
84
commands/zoneinfo/README
Normal file
84
commands/zoneinfo/README
Normal file
|
@ -0,0 +1,84 @@
|
|||
@(#)README 7.12
|
||||
|
||||
"What time is it?" -- Richard Deacon as The King
|
||||
"Any time you want it to be." -- Frank Baxter as The Scientist
|
||||
(from the Bell System film "About Time")
|
||||
|
||||
The 1989 update of the time zone package featured
|
||||
|
||||
* POSIXization (including interpretation of POSIX-style TZ environment
|
||||
variables, provided by Guy Harris),
|
||||
* ANSIfication (including versions of "mktime" and "difftime"),
|
||||
* SVIDulation (an "altzone" variable)
|
||||
* MACHination (the "gtime" function)
|
||||
* corrections to some time zone data (including corrections to the rules
|
||||
for Great Britain and New Zealand)
|
||||
* reference data from the United States Naval Observatory for folks who
|
||||
want to do additional time zones
|
||||
* and the 1989 data for Saudi Arabia.
|
||||
|
||||
(Since this code will be treated as "part of the implementation" in some places
|
||||
and as "part of the application" in others, there's no good way to name
|
||||
functions, such as timegm, that are not part of the proposed ANSI C standard;
|
||||
such functions have kept their old, underscore-free names in this update.)
|
||||
|
||||
And the "dysize" function has disappeared; it was present to allow compilation
|
||||
of the "date" command on old BSD systems, and a version of "date" is now
|
||||
provided in the package. The "date" command is not created when you "make all"
|
||||
since it may lack options provided by the version distributed with your
|
||||
operating system, or may not interact with the system in the same way the
|
||||
native version does.
|
||||
|
||||
Since POSIX frowns on correct leap second handling, the default behavior of
|
||||
the "zic" command (in the absence of a "-L" option) has been changed to omit
|
||||
leap second information from its output files.
|
||||
|
||||
Here is a recipe for acquiring, building, installing, and testing the
|
||||
tz distribution on a GNU/Linux or similar host.
|
||||
|
||||
mkdir tz
|
||||
cd tz
|
||||
wget 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz'
|
||||
gzip -dc tzcode*.tar.gz | tar -xf -
|
||||
gzip -dc tzdata*.tar.gz | tar -xf -
|
||||
|
||||
Be sure to read the comments in "Makefile" and make any changes needed
|
||||
to make things right for your system, especially if you are using some
|
||||
platform other than GNU/Linux. Then run the following commands,
|
||||
substituting your desired installation directory for "$HOME/tzdir":
|
||||
|
||||
make TOPDIR=$HOME/tzdir install
|
||||
$HOME/tzdir/etc/zdump -v America/Los_Angeles
|
||||
|
||||
To use the new functions, use a "-ltz" option when compiling or linking.
|
||||
|
||||
Historical local time information has been included here to:
|
||||
|
||||
* provide a compendium of data about the history of civil time
|
||||
that is useful even if the data are not 100% accurate;
|
||||
|
||||
* give an idea of the variety of local time rules that have
|
||||
existed in the past and thus an idea of the variety that may be
|
||||
expected in the future;
|
||||
|
||||
* provide a test of the generality of the local time rule description
|
||||
system.
|
||||
|
||||
The information in the time zone data files is by no means authoritative;
|
||||
the files currently do not even attempt to covar all time stamps before
|
||||
1970, and there are undoubtedly errors even for time stamps since 1970.
|
||||
If you know that the rules are different from those in a file, by all means
|
||||
feel free to change file (and please send the changed version to
|
||||
tz@elsie.nci.nih.gov for use in the future). Europeans take note!
|
||||
|
||||
Thanks to these Timezone Caballeros who've made major contributions to the
|
||||
time conversion package: Keith Bostic; Bob Devine; Paul Eggert; Robert Elz;
|
||||
Guy Harris; Mark Horton; John Mackin; and Bradley White. Thanks also to
|
||||
Michael Bloom, Art Neilson, Stephen Prince, John Sovereign, and Frank Wales
|
||||
for testing work, and to Gwillim Law for checking local mean time data.
|
||||
None of them are responsible for remaining errors.
|
||||
|
||||
Look in the ~ftp/pub directory of elsie.nci.nih.gov
|
||||
for updated versions of these files.
|
||||
|
||||
Please send comments or information to tz@elsie.nci.nih.gov.
|
569
commands/zoneinfo/Theory
Normal file
569
commands/zoneinfo/Theory
Normal file
|
@ -0,0 +1,569 @@
|
|||
@(#)Theory 7.19
|
||||
|
||||
|
||||
----- Outline -----
|
||||
|
||||
Time and date functions
|
||||
Names of time zone regions
|
||||
Time zone abbreviations
|
||||
Calendrical issues
|
||||
Time and time zones on Mars
|
||||
|
||||
|
||||
----- Time and date functions -----
|
||||
|
||||
These time and date functions are upwards compatible with POSIX,
|
||||
an international standard for UNIX-like systems.
|
||||
As of this writing, the current edition of POSIX is:
|
||||
|
||||
Standard for Information technology
|
||||
-- Portable Operating System Interface (POSIX (R))
|
||||
-- System Interfaces
|
||||
IEEE Std 1003.1, 2004 Edition
|
||||
<http://www.opengroup.org/online-pubs?DOC=7999959899>
|
||||
<http://www.opengroup.org/pubs/catalog/t041.htm>
|
||||
|
||||
POSIX has the following properties and limitations.
|
||||
|
||||
* In POSIX, time display in a process is controlled by the
|
||||
environment variable TZ. Unfortunately, the POSIX TZ string takes
|
||||
a form that is hard to describe and is error-prone in practice.
|
||||
Also, POSIX TZ strings can't deal with other (for example, Israeli)
|
||||
daylight saving time rules, or situations where more than two
|
||||
time zone abbreviations are used in an area.
|
||||
|
||||
The POSIX TZ string takes the following form:
|
||||
|
||||
stdoffset[dst[offset],date[/time],date[/time]]
|
||||
|
||||
where:
|
||||
|
||||
std and dst
|
||||
are 3 or more characters specifying the standard
|
||||
and daylight saving time (DST) zone names.
|
||||
Starting with POSIX.1-2001, std and dst may also be
|
||||
in a quoted form like "<UTC+10>"; this allows
|
||||
"+" and "-" in the names.
|
||||
offset
|
||||
is of the form `[-]hh:[mm[:ss]]' and specifies the
|
||||
offset west of UTC. The default DST offset is one hour
|
||||
ahead of standard time.
|
||||
date[/time],date[/time]
|
||||
specifies the beginning and end of DST. If this is absent,
|
||||
the system supplies its own rules for DST, and these can
|
||||
differ from year to year; typically US DST rules are used.
|
||||
time
|
||||
takes the form `hh:[mm[:ss]]' and defaults to 02:00.
|
||||
date
|
||||
takes one of the following forms:
|
||||
Jn (1<=n<=365)
|
||||
origin-1 day number not counting February 29
|
||||
n (0<=n<=365)
|
||||
origin-0 day number counting February 29 if present
|
||||
Mm.n.d (0[Sunday]<=d<=6[Saturday], 1<=n<=5, 1<=m<=12)
|
||||
for the dth day of week n of month m of the year,
|
||||
where week 1 is the first week in which day d appears,
|
||||
and `5' stands for the last week in which day d appears
|
||||
(which may be either the 4th or 5th week).
|
||||
|
||||
Here is an example POSIX TZ string, for US Pacific time using rules
|
||||
appropriate from 1987 through 2006:
|
||||
|
||||
TZ='PST8PDT,M4.1.0/02:00,M10.5.0/02:00'
|
||||
|
||||
This POSIX TZ string is hard to remember, and mishandles time stamps
|
||||
before 1987 and after 2006. With this package you can use this
|
||||
instead:
|
||||
|
||||
TZ='America/Los_Angeles'
|
||||
|
||||
* POSIX does not define the exact meaning of TZ values like "EST5EDT".
|
||||
Typically the current US DST rules are used to interpret such values,
|
||||
but this means that the US DST rules are compiled into each program
|
||||
that does time conversion. This means that when US time conversion
|
||||
rules change (as in the United States in 1987), all programs that
|
||||
do time conversion must be recompiled to ensure proper results.
|
||||
|
||||
* In POSIX, there's no tamper-proof way for a process to learn the
|
||||
system's best idea of local wall clock. (This is important for
|
||||
applications that an administrator wants used only at certain times--
|
||||
without regard to whether the user has fiddled the "TZ" environment
|
||||
variable. While an administrator can "do everything in UTC" to get
|
||||
around the problem, doing so is inconvenient and precludes handling
|
||||
daylight saving time shifts--as might be required to limit phone
|
||||
calls to off-peak hours.)
|
||||
|
||||
* POSIX requires that systems ignore leap seconds.
|
||||
|
||||
These are the extensions that have been made to the POSIX functions:
|
||||
|
||||
* The "TZ" environment variable is used in generating the name of a file
|
||||
from which time zone information is read (or is interpreted a la
|
||||
POSIX); "TZ" is no longer constrained to be a three-letter time zone
|
||||
name followed by a number of hours and an optional three-letter
|
||||
daylight time zone name. The daylight saving time rules to be used
|
||||
for a particular time zone are encoded in the time zone file;
|
||||
the format of the file allows U.S., Australian, and other rules to be
|
||||
encoded, and allows for situations where more than two time zone
|
||||
abbreviations are used.
|
||||
|
||||
It was recognized that allowing the "TZ" environment variable to
|
||||
take on values such as "America/New_York" might cause "old" programs
|
||||
(that expect "TZ" to have a certain form) to operate incorrectly;
|
||||
consideration was given to using some other environment variable
|
||||
(for example, "TIMEZONE") to hold the string used to generate the
|
||||
time zone information file name. In the end, however, it was decided
|
||||
to continue using "TZ": it is widely used for time zone purposes;
|
||||
separately maintaining both "TZ" and "TIMEZONE" seemed a nuisance;
|
||||
and systems where "new" forms of "TZ" might cause problems can simply
|
||||
use TZ values such as "EST5EDT" which can be used both by
|
||||
"new" programs (a la POSIX) and "old" programs (as zone names and
|
||||
offsets).
|
||||
|
||||
* To handle places where more than two time zone abbreviations are used,
|
||||
the functions "localtime" and "gmtime" set tzname[tmp->tm_isdst]
|
||||
(where "tmp" is the value the function returns) to the time zone
|
||||
abbreviation to be used. This differs from POSIX, where the elements
|
||||
of tzname are only changed as a result of calls to tzset.
|
||||
|
||||
* Since the "TZ" environment variable can now be used to control time
|
||||
conversion, the "daylight" and "timezone" variables are no longer
|
||||
needed. (These variables are defined and set by "tzset"; however, their
|
||||
values will not be used by "localtime.")
|
||||
|
||||
* The "localtime" function has been set up to deliver correct results
|
||||
for near-minimum or near-maximum time_t values. (A comment in the
|
||||
source code tells how to get compatibly wrong results).
|
||||
|
||||
* A function "tzsetwall" has been added to arrange for the system's
|
||||
best approximation to local wall clock time to be delivered by
|
||||
subsequent calls to "localtime." Source code for portable
|
||||
applications that "must" run on local wall clock time should call
|
||||
"tzsetwall();" if such code is moved to "old" systems that don't
|
||||
provide tzsetwall, you won't be able to generate an executable program.
|
||||
(These time zone functions also arrange for local wall clock time to be
|
||||
used if tzset is called--directly or indirectly--and there's no "TZ"
|
||||
environment variable; portable applications should not, however, rely
|
||||
on this behavior since it's not the way SVR2 systems behave.)
|
||||
|
||||
* These functions can account for leap seconds, thanks to Bradley White.
|
||||
|
||||
Points of interest to folks with other systems:
|
||||
|
||||
* This package is already part of many POSIX-compliant hosts,
|
||||
including BSD, HP, Linux, Network Appliance, SCO, SGI, and Sun.
|
||||
On such hosts, the primary use of this package
|
||||
is to update obsolete time zone rule tables.
|
||||
To do this, you may need to compile the time zone compiler
|
||||
`zic' supplied with this package instead of using the system `zic',
|
||||
since the format of zic's input changed slightly in late 1994,
|
||||
and many vendors still do not support the new input format.
|
||||
|
||||
* The UNIX Version 7 "timezone" function is not present in this package;
|
||||
it's impossible to reliably map timezone's arguments (a "minutes west
|
||||
of GMT" value and a "daylight saving time in effect" flag) to a
|
||||
time zone abbreviation, and we refuse to guess.
|
||||
Programs that in the past used the timezone function may now examine
|
||||
tzname[localtime(&clock)->tm_isdst] to learn the correct time
|
||||
zone abbreviation to use. Alternatively, use
|
||||
localtime(&clock)->tm_zone if this has been enabled.
|
||||
|
||||
* The 4.2BSD gettimeofday function is not used in this package.
|
||||
This formerly let users obtain the current UTC offset and DST flag,
|
||||
but this functionality was removed in later versions of BSD.
|
||||
|
||||
* In SVR2, time conversion fails for near-minimum or near-maximum
|
||||
time_t values when doing conversions for places that don't use UTC.
|
||||
This package takes care to do these conversions correctly.
|
||||
|
||||
The functions that are conditionally compiled if STD_INSPIRED is defined
|
||||
should, at this point, be looked on primarily as food for thought. They are
|
||||
not in any sense "standard compatible"--some are not, in fact, specified in
|
||||
*any* standard. They do, however, represent responses of various authors to
|
||||
standardization proposals.
|
||||
|
||||
Other time conversion proposals, in particular the one developed by folks at
|
||||
Hewlett Packard, offer a wider selection of functions that provide capabilities
|
||||
beyond those provided here. The absence of such functions from this package
|
||||
is not meant to discourage the development, standardization, or use of such
|
||||
functions. Rather, their absence reflects the decision to make this package
|
||||
contain valid extensions to POSIX, to ensure its broad acceptability. If
|
||||
more powerful time conversion functions can be standardized, so much the
|
||||
better.
|
||||
|
||||
|
||||
----- Names of time zone rule files -----
|
||||
|
||||
The time zone rule file naming conventions attempt to strike a balance
|
||||
among the following goals:
|
||||
|
||||
* Uniquely identify every national region where clocks have all
|
||||
agreed since 1970. This is essential for the intended use: static
|
||||
clocks keeping local civil time.
|
||||
|
||||
* Indicate to humans as to where that region is. This simplifes use.
|
||||
|
||||
* Be robust in the presence of political changes. This reduces the
|
||||
number of updates and backward-compatibility hacks. For example,
|
||||
names of countries are ordinarily not used, to avoid
|
||||
incompatibilities when countries change their name
|
||||
(e.g. Zaire->Congo) or when locations change countries
|
||||
(e.g. Hong Kong from UK colony to China).
|
||||
|
||||
* Be portable to a wide variety of implementations.
|
||||
This promotes use of the technology.
|
||||
|
||||
* Use a consistent naming convention over the entire world.
|
||||
This simplifies both use and maintenance.
|
||||
|
||||
This naming convention is not intended for use by inexperienced users
|
||||
to select TZ values by themselves (though they can of course examine
|
||||
and reuse existing settings). Distributors should provide
|
||||
documentation and/or a simple selection interface that explains the
|
||||
names; see the 'tzselect' program supplied with this distribution for
|
||||
one example.
|
||||
|
||||
Names normally have the form AREA/LOCATION, where AREA is the name
|
||||
of a continent or ocean, and LOCATION is the name of a specific
|
||||
location within that region. North and South America share the same
|
||||
area, `America'. Typical names are `Africa/Cairo', `America/New_York',
|
||||
and `Pacific/Honolulu'.
|
||||
|
||||
Here are the general rules used for choosing location names,
|
||||
in decreasing order of importance:
|
||||
|
||||
Use only valid POSIX file name components (i.e., the parts of
|
||||
names other than `/'). Within a file name component,
|
||||
use only ASCII letters, `.', `-' and `_'. Do not use
|
||||
digits, as that might create an ambiguity with POSIX
|
||||
TZ strings. A file name component must not exceed 14
|
||||
characters or start with `-'. E.g., prefer `Brunei'
|
||||
to `Bandar_Seri_Begawan'.
|
||||
Include at least one location per time zone rule set per country.
|
||||
One such location is enough. Use ISO 3166 (see the file
|
||||
iso3166.tab) to help decide whether something is a country.
|
||||
However, uninhabited ISO 3166 regions like Bouvet Island
|
||||
do not need locations, since local time is not defined there.
|
||||
If all the clocks in a country's region have agreed since 1970,
|
||||
don't bother to include more than one location
|
||||
even if subregions' clocks disagreed before 1970.
|
||||
Otherwise these tables would become annoyingly large.
|
||||
If a name is ambiguous, use a less ambiguous alternative;
|
||||
e.g. many cities are named San Jose and Georgetown, so
|
||||
prefer `Costa_Rica' to `San_Jose' and `Guyana' to `Georgetown'.
|
||||
Keep locations compact. Use cities or small islands, not countries
|
||||
or regions, so that any future time zone changes do not split
|
||||
locations into different time zones. E.g. prefer `Paris'
|
||||
to `France', since France has had multiple time zones.
|
||||
Use mainstream English spelling, e.g. prefer `Rome' to `Roma', and
|
||||
prefer `Athens' to the true name (which uses Greek letters).
|
||||
The POSIX file name restrictions encourage this rule.
|
||||
Use the most populous among locations in a country's time zone,
|
||||
e.g. prefer `Shanghai' to `Beijing'. Among locations with
|
||||
similar populations, pick the best-known location,
|
||||
e.g. prefer `Rome' to `Milan'.
|
||||
Use the singular form, e.g. prefer `Canary' to `Canaries'.
|
||||
Omit common suffixes like `_Islands' and `_City', unless that
|
||||
would lead to ambiguity. E.g. prefer `Cayman' to
|
||||
`Cayman_Islands' and `Guatemala' to `Guatemala_City',
|
||||
but prefer `Mexico_City' to `Mexico' because the country
|
||||
of Mexico has several time zones.
|
||||
Use `_' to represent a space.
|
||||
Omit `.' from abbreviations in names, e.g. prefer `St_Helena'
|
||||
to `St._Helena'.
|
||||
Do not change established names if they only marginally
|
||||
violate the above rules. For example, don't change
|
||||
the existing name `Rome' to `Milan' merely because
|
||||
Milan's population has grown to be somewhat greater
|
||||
than Rome's.
|
||||
If a name is changed, put its old spelling in the `backward' file.
|
||||
|
||||
The file `zone.tab' lists the geographical locations used to name
|
||||
time zone rule files. It is intended to be an exhaustive list
|
||||
of canonical names for geographic regions.
|
||||
|
||||
Older versions of this package used a different naming scheme,
|
||||
and these older names are still supported.
|
||||
See the file `backward' for most of these older names
|
||||
(e.g. `US/Eastern' instead of `America/New_York').
|
||||
The other old-fashioned names still supported are
|
||||
`WET', `CET', `MET', `EET' (see the file `europe'),
|
||||
and `Factory' (see the file `factory').
|
||||
|
||||
|
||||
----- Time zone abbreviations -----
|
||||
|
||||
When this package is installed, it generates time zone abbreviations
|
||||
like `EST' to be compatible with human tradition and POSIX.
|
||||
Here are the general rules used for choosing time zone abbreviations,
|
||||
in decreasing order of importance:
|
||||
|
||||
Use abbreviations that consist of three or more ASCII letters.
|
||||
Previous editions of this database also used characters like
|
||||
' ' and '?', but these characters have a special meaning to
|
||||
the shell and cause commands like
|
||||
set `date`
|
||||
to have unexpected effects.
|
||||
Previous editions of this rule required upper-case letters,
|
||||
but the Congressman who introduced Chamorro Standard Time
|
||||
preferred "ChST", so the rule has been relaxed.
|
||||
|
||||
This rule guarantees that all abbreviations could have
|
||||
been specified by a POSIX TZ string. POSIX
|
||||
requires at least three characters for an
|
||||
abbreviation. POSIX through 2000 says that an abbreviation
|
||||
cannot start with ':', and cannot contain ',', '-',
|
||||
'+', NUL, or a digit. POSIX from 2001 on changes this
|
||||
rule to say that an abbreviation can contain only '-', '+',
|
||||
and alphanumeric characters from the portable character set
|
||||
in the current locale. To be portable to both sets of
|
||||
rules, an abbreviation must therefore use only ASCII
|
||||
letters.
|
||||
|
||||
Use abbreviations that are in common use among English-speakers,
|
||||
e.g. `EST' for Eastern Standard Time in North America.
|
||||
We assume that applications translate them to other languages
|
||||
as part of the normal localization process; for example,
|
||||
a French application might translate `EST' to `HNE'.
|
||||
|
||||
For zones whose times are taken from a city's longitude, use the
|
||||
traditional xMT notation, e.g. `PMT' for Paris Mean Time.
|
||||
The only name like this in current use is `GMT'.
|
||||
|
||||
If there is no common English abbreviation, abbreviate the English
|
||||
translation of the usual phrase used by native speakers.
|
||||
If this is not available or is a phrase mentioning the country
|
||||
(e.g. ``Cape Verde Time''), then:
|
||||
|
||||
When a country has a single or principal time zone region,
|
||||
append `T' to the country's ISO code, e.g. `CVT' for
|
||||
Cape Verde Time. For summer time append `ST';
|
||||
for double summer time append `DST'; etc.
|
||||
When a country has multiple time zones, take the first three
|
||||
letters of an English place name identifying each zone
|
||||
and then append `T', `ST', etc. as before;
|
||||
e.g. `VLAST' for VLAdivostok Summer Time.
|
||||
|
||||
Use UTC (with time zone abbreviation "zzz") for locations while
|
||||
uninhabited. The "zzz" mnemonic is that these locations are,
|
||||
in some sense, asleep.
|
||||
|
||||
Application writers should note that these abbreviations are ambiguous
|
||||
in practice: e.g. `EST' has a different meaning in Australia than
|
||||
it does in the United States. In new applications, it's often better
|
||||
to use numeric UTC offsets like `-0500' instead of time zone
|
||||
abbreviations like `EST'; this avoids the ambiguity.
|
||||
|
||||
|
||||
----- Calendrical issues -----
|
||||
|
||||
Calendrical issues are a bit out of scope for a time zone database,
|
||||
but they indicate the sort of problems that we would run into if we
|
||||
extended the time zone database further into the past. An excellent
|
||||
resource in this area is Edward M. Reingold and Nachum Dershowitz,
|
||||
<a href="http://emr.cs.uiuc.edu/home/reingold/calendar-book/second-edition/">
|
||||
Calendrical Calculations: The Millennium Edition
|
||||
</a>, Cambridge University Press (2001). Other information and
|
||||
sources are given below. They sometimes disagree.
|
||||
|
||||
|
||||
France
|
||||
|
||||
Gregorian calendar adopted 1582-12-20.
|
||||
French Revolutionary calendar used 1793-11-24 through 1805-12-31,
|
||||
and (in Paris only) 1871-05-06 through 1871-05-23.
|
||||
|
||||
|
||||
Russia
|
||||
|
||||
From Chris Carrier (1996-12-02):
|
||||
On 1929-10-01 the Soviet Union instituted an ``Eternal Calendar''
|
||||
with 30-day months plus 5 holidays, with a 5-day week.
|
||||
On 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the
|
||||
Gregorian calendar while retaining the 6-day week; on 1940-06-27 it
|
||||
reverted to the 7-day week. With the 6-day week the usual days
|
||||
off were the 6th, 12th, 18th, 24th and 30th of the month.
|
||||
(Source: Evitiar Zerubavel, _The Seven Day Circle_)
|
||||
|
||||
|
||||
Mark Brader reported a similar story in "The Book of Calendars", edited
|
||||
by Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377. But:
|
||||
|
||||
From: Petteri Sulonen (via Usenet)
|
||||
Date: 14 Jan 1999 00:00:00 GMT
|
||||
...
|
||||
|
||||
If your source is correct, how come documents between 1929 -- 1940 were
|
||||
still dated using the conventional, Gregorian calendar?
|
||||
|
||||
I can post a scan of a document dated December 1, 1934, signed by
|
||||
Yenukidze, the secretary, on behalf of Kalinin, the President of the
|
||||
Executive Committee of the Supreme Soviet, if you like.
|
||||
|
||||
|
||||
|
||||
Sweden (and Finland)
|
||||
|
||||
From: Mark Brader
|
||||
<a href="news:1996Jul6.012937.29190@sq.com">
|
||||
Subject: Re: Gregorian reform -- a part of locale?
|
||||
</a>
|
||||
Date: 1996-07-06
|
||||
|
||||
In 1700, Denmark made the transition from Julian to Gregorian. Sweden
|
||||
decided to *start* a transition in 1700 as well, but rather than have one of
|
||||
those unsightly calendar gaps :-), they simply decreed that the next leap
|
||||
year after 1696 would be in 1744 -- putting the whole country on a calendar
|
||||
different from both Julian and Gregorian for a period of 40 years.
|
||||
|
||||
However, in 1704 something went wrong and the plan was not carried through;
|
||||
they did, after all, have a leap year that year. And one in 1708. In 1712
|
||||
they gave it up and went back to Julian, putting 30 days in February that
|
||||
year!...
|
||||
|
||||
Then in 1753, Sweden made the transition to Gregorian in the usual manner,
|
||||
getting there only 13 years behind the original schedule.
|
||||
|
||||
(A previous posting of this story was challenged, and Swedish readers
|
||||
produced the following references to support it: "Tiderakning och historia"
|
||||
by Natanael Beckman (1924) and "Tid, en bok om tiderakning och
|
||||
kalendervasen" by Lars-Olof Lode'n (no date was given).)
|
||||
|
||||
|
||||
Grotefend's data
|
||||
|
||||
From: "Michael Palmer" [with one obvious typo fixed]
|
||||
Subject: Re: Gregorian Calendar (was Re: Another FHC related question
|
||||
Newsgroups: soc.genealogy.german
|
||||
Date: Tue, 9 Feb 1999 02:32:48 -800
|
||||
...
|
||||
|
||||
The following is a(n incomplete) listing, arranged chronologically, of
|
||||
European states, with the date they converted from the Julian to the
|
||||
Gregorian calendar:
|
||||
|
||||
04/15 Oct 1582 - Italy (with exceptions), Spain, Portugal, Poland (Roman
|
||||
Catholics and Danzig only)
|
||||
09/20 Dec 1582 - France, Lorraine
|
||||
|
||||
21 Dec 1582/
|
||||
01 Jan 1583 - Holland, Brabant, Flanders, Hennegau
|
||||
10/21 Feb 1583 - bishopric of Liege (L"uttich)
|
||||
13/24 Feb 1583 - bishopric of Augsburg
|
||||
04/15 Oct 1583 - electorate of Trier
|
||||
05/16 Oct 1583 - Bavaria, bishoprics of Freising, Eichstedt, Regensburg,
|
||||
Salzburg, Brixen
|
||||
13/24 Oct 1583 - Austrian Oberelsass and Breisgau
|
||||
20/31 Oct 1583 - bishopric of Basel
|
||||
02/13 Nov 1583 - duchy of J"ulich-Berg
|
||||
02/13 Nov 1583 - electorate and city of K"oln
|
||||
04/15 Nov 1583 - bishopric of W"urzburg
|
||||
11/22 Nov 1583 - electorate of Mainz
|
||||
16/27 Nov 1583 - bishopric of Strassburg and the margraviate of Baden
|
||||
17/28 Nov 1583 - bishopric of M"unster and duchy of Cleve
|
||||
14/25 Dec 1583 - Steiermark
|
||||
|
||||
06/17 Jan 1584 - Austria and Bohemia
|
||||
11/22 Jan 1584 - Luzern, Uri, Schwyz, Zug, Freiburg, Solothurn
|
||||
12/23 Jan 1584 - Silesia and the Lausitz
|
||||
22 Jan/
|
||||
02 Feb 1584 - Hungary (legally on 21 Oct 1587)
|
||||
Jun 1584 - Unterwalden
|
||||
01/12 Jul 1584 - duchy of Westfalen
|
||||
|
||||
16/27 Jun 1585 - bishopric of Paderborn
|
||||
|
||||
14/25 Dec 1590 - Transylvania
|
||||
|
||||
22 Aug/
|
||||
02 Sep 1612 - duchy of Prussia
|
||||
|
||||
13/24 Dec 1614 - Pfalz-Neuburg
|
||||
|
||||
1617 - duchy of Kurland (reverted to the Julian calendar in
|
||||
1796)
|
||||
|
||||
1624 - bishopric of Osnabr"uck
|
||||
|
||||
1630 - bishopric of Minden
|
||||
|
||||
15/26 Mar 1631 - bishopric of Hildesheim
|
||||
|
||||
1655 - Kanton Wallis
|
||||
|
||||
05/16 Feb 1682 - city of Strassburg
|
||||
|
||||
18 Feb/
|
||||
01 Mar 1700 - Protestant Germany (including Swedish possessions in
|
||||
Germany), Denmark, Norway
|
||||
30 Jun/
|
||||
12 Jul 1700 - Gelderland, Zutphen
|
||||
10 Nov/
|
||||
12 Dec 1700 - Utrecht, Overijssel
|
||||
|
||||
31 Dec 1700/
|
||||
12 Jan 1701 - Friesland, Groningen, Z"urich, Bern, Basel, Geneva,
|
||||
Turgau, and Schaffhausen
|
||||
|
||||
1724 - Glarus, Appenzell, and the city of St. Gallen
|
||||
|
||||
01 Jan 1750 - Pisa and Florence
|
||||
|
||||
02/14 Sep 1752 - Great Britain
|
||||
|
||||
17 Feb/
|
||||
01 Mar 1753 - Sweden
|
||||
|
||||
1760-1812 - Graub"unden
|
||||
|
||||
The Russian empire (including Finland and the Baltic states) did not
|
||||
convert to the Gregorian calendar until the Soviet revolution of 1917.
|
||||
|
||||
Source: H. Grotefend, _Taschenbuch der Zeitrechnung des deutschen
|
||||
Mittelalters und der Neuzeit_, herausgegeben von Dr. O. Grotefend
|
||||
(Hannover: Hahnsche Buchhandlung, 1941), pp. 26-28.
|
||||
|
||||
|
||||
----- Time and time zones on Mars -----
|
||||
|
||||
Some people have adjusted their work schedules to fit Mars time.
|
||||
Dozens of special Mars watches were built for Jet Propulsion
|
||||
Laboratory workers who kept Mars time during the Mars Exploration
|
||||
Rovers mission (2004). These timepieces look like normal Seikos and
|
||||
Citizens but use Mars seconds rather than terrestrial seconds.
|
||||
|
||||
A Mars solar day is called a "sol" and has a mean period equal to
|
||||
about 24 hours 39 minutes 35.244 seconds in terrestrial time. It is
|
||||
divided into a conventional 24-hour clock, so each Mars second equals
|
||||
about 1.02749125 terrestrial seconds.
|
||||
|
||||
The prime meridian of Mars goes through the center of the crater
|
||||
Airy-0, named in honor of the British astronomer who built the
|
||||
Greenwich telescope that defines Earth's prime meridian. Mean solar
|
||||
time on the Mars prime meridian is called Mars Coordinated Time (MTC).
|
||||
|
||||
Each landed mission on Mars has adopted a different reference for
|
||||
solar time keeping, so there is no real standard for Mars time zones.
|
||||
For example, the Mars Exploration Rover project (2004) defined two
|
||||
time zones "Local Solar Time A" and "Local Solar Time B" for its two
|
||||
missions, each zone designed so that its time equals local true solar
|
||||
time at approximately the middle of the nominal mission. Such a "time
|
||||
zone" is not particularly suited for any application other than the
|
||||
mission itself.
|
||||
|
||||
Many calendars have been proposed for Mars, but none have achieved
|
||||
wide acceptance. Astronomers often use Mars Sol Date (MSD) which is a
|
||||
sequential count of Mars solar days elapsed since about 1873-12-29
|
||||
12:00 GMT.
|
||||
|
||||
The tz database does not currently support Mars time, but it is
|
||||
documented here in the hopes that support will be added eventually.
|
||||
|
||||
Sources:
|
||||
|
||||
Michael Allison and Robert Schmunk,
|
||||
"Technical Notes on Mars Solar Time as Adopted by the Mars24 Sunclock"
|
||||
<http://www.giss.nasa.gov/tools/mars24/help/notes.html> (2004-07-30).
|
||||
|
||||
Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times
|
||||
(2004-01-14), pp A1, A20-A21.
|
641
commands/zoneinfo/africa
Normal file
641
commands/zoneinfo/africa
Normal file
|
@ -0,0 +1,641 @@
|
|||
# @(#)africa 8.7
|
||||
# <pre>
|
||||
|
||||
# This data is by no means authoritative; if you think you know better,
|
||||
# go ahead and edit the file (and please send any changes to
|
||||
# tz@elsie.nci.nih.gov for general use in the future).
|
||||
|
||||
# From Paul Eggert (2006-03-22):
|
||||
#
|
||||
# A good source for time zone historical data outside the U.S. is
|
||||
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
|
||||
# San Diego: ACS Publications, Inc. (2003).
|
||||
#
|
||||
# Gwillim Law writes that a good source
|
||||
# for recent time zone data is the International Air Transport
|
||||
# Association's Standard Schedules Information Manual (IATA SSIM),
|
||||
# published semiannually. Law sent in several helpful summaries
|
||||
# of the IATA's data after 1990.
|
||||
#
|
||||
# Except where otherwise noted, Shanks & Pottenger is the source for
|
||||
# entries through 1990, and IATA SSIM is the source for entries afterwards.
|
||||
#
|
||||
# Another source occasionally used is Edward W. Whitman, World Time Differences,
|
||||
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
|
||||
# I found in the UCLA library.
|
||||
#
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# Previous editions of this database used WAT, CAT, SAT, and EAT
|
||||
# for +0:00 through +3:00, respectively,
|
||||
# but Mark R V Murray reports that
|
||||
# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
|
||||
# `CAT' is commonly used for +2:00 in countries north of South Africa, and
|
||||
# `WAT' is probably the best name for +1:00, as the common phrase for
|
||||
# the area that includes Nigeria is ``West Africa''.
|
||||
# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
|
||||
#
|
||||
# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
|
||||
# I'd guess that this was because people needed _some_ name for -1:00,
|
||||
# and at the time, far west Africa was the only major land area in -1:00.
|
||||
# This usage is now obsolete, as the last use of -1:00 on the African
|
||||
# mainland seems to have been 1976 in Western Sahara.
|
||||
#
|
||||
# To summarize, the following abbreviations seem to have some currency:
|
||||
# -1:00 WAT West Africa Time (no longer used)
|
||||
# 0:00 GMT Greenwich Mean Time
|
||||
# 2:00 CAT Central Africa Time
|
||||
# 2:00 SAST South Africa Standard Time
|
||||
# and Murray suggests the following abbreviation:
|
||||
# 1:00 WAT West Africa Time
|
||||
# I realize that this leads to `WAT' being used for both -1:00 and 1:00
|
||||
# for times before 1976, but this is the best I can think of
|
||||
# until we get more information.
|
||||
#
|
||||
# I invented the following abbreviations; corrections are welcome!
|
||||
# 2:00 WAST West Africa Summer Time
|
||||
# 2:30 BEAT British East Africa Time (no longer used)
|
||||
# 2:44:45 BEAUT British East Africa Unified Time (no longer used)
|
||||
# 3:00 CAST Central Africa Summer Time (no longer used)
|
||||
# 3:00 SAST South Africa Summer Time (no longer used)
|
||||
# 3:00 EAT East Africa Time
|
||||
# 4:00 EAST East Africa Summer Time (no longer used)
|
||||
|
||||
# Algeria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
|
||||
Rule Algeria 1918 only - Mar 9 23:00s 1:00 S
|
||||
Rule Algeria 1919 only - Mar 1 23:00s 1:00 S
|
||||
Rule Algeria 1920 only - Feb 14 23:00s 1:00 S
|
||||
Rule Algeria 1920 only - Oct 23 23:00s 0 -
|
||||
Rule Algeria 1921 only - Mar 14 23:00s 1:00 S
|
||||
Rule Algeria 1921 only - Jun 21 23:00s 0 -
|
||||
Rule Algeria 1939 only - Sep 11 23:00s 1:00 S
|
||||
Rule Algeria 1939 only - Nov 19 1:00 0 -
|
||||
Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S
|
||||
Rule Algeria 1944 only - Oct 8 2:00 0 -
|
||||
Rule Algeria 1945 only - Sep 16 1:00 0 -
|
||||
Rule Algeria 1971 only - Apr 25 23:00s 1:00 S
|
||||
Rule Algeria 1971 only - Sep 26 23:00s 0 -
|
||||
Rule Algeria 1977 only - May 6 0:00 1:00 S
|
||||
Rule Algeria 1977 only - Oct 21 0:00 0 -
|
||||
Rule Algeria 1978 only - Mar 24 1:00 1:00 S
|
||||
Rule Algeria 1978 only - Sep 22 3:00 0 -
|
||||
Rule Algeria 1980 only - Apr 25 0:00 1:00 S
|
||||
Rule Algeria 1980 only - Oct 31 2:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
0:00 Algeria WE%sT 1940 Feb 25 2:00
|
||||
1:00 Algeria CE%sT 1946 Oct 7
|
||||
0:00 - WET 1956 Jan 29
|
||||
1:00 - CET 1963 Apr 14
|
||||
0:00 Algeria WE%sT 1977 Oct 21
|
||||
1:00 Algeria CE%sT 1979 Oct 26
|
||||
0:00 Algeria WE%sT 1981 May
|
||||
1:00 - CET
|
||||
|
||||
# Angola
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Luanda 0:52:56 - LMT 1892
|
||||
0:52:04 - AOT 1911 May 26 # Angola Time
|
||||
1:00 - WAT
|
||||
|
||||
# Benin
|
||||
# Whitman says they switched to 1:00 in 1946, not 1934;
|
||||
# go with Shanks & Pottenger.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Porto-Novo 0:10:28 - LMT 1912
|
||||
0:00 - GMT 1934 Feb 26
|
||||
1:00 - WAT
|
||||
|
||||
# Botswana
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Gaborone 1:43:40 - LMT 1885
|
||||
2:00 - CAT 1943 Sep 19 2:00
|
||||
2:00 1:00 CAST 1944 Mar 19 2:00
|
||||
2:00 - CAT
|
||||
|
||||
# Burkina Faso
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Ouagadougou -0:06:04 - LMT 1912
|
||||
0:00 - GMT
|
||||
|
||||
# Burundi
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Bujumbura 1:57:28 - LMT 1890
|
||||
2:00 - CAT
|
||||
|
||||
# Cameroon
|
||||
# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Douala 0:38:48 - LMT 1912
|
||||
1:00 - WAT
|
||||
|
||||
# Cape Verde
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia
|
||||
-2:00 - CVT 1942 Sep
|
||||
-2:00 1:00 CVST 1945 Oct 15
|
||||
-2:00 - CVT 1975 Nov 25 2:00
|
||||
-1:00 - CVT
|
||||
|
||||
# Central African Republic
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Bangui 1:14:20 - LMT 1912
|
||||
1:00 - WAT
|
||||
|
||||
# Chad
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Ndjamena 1:00:12 - LMT 1912
|
||||
1:00 - WAT 1979 Oct 14
|
||||
1:00 1:00 WAST 1980 Mar 8
|
||||
1:00 - WAT
|
||||
|
||||
# Comoros
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
|
||||
3:00 - EAT
|
||||
|
||||
# Democratic Republic of Congo
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Kinshasa 1:01:12 - LMT 1897 Nov 9
|
||||
1:00 - WAT
|
||||
Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
|
||||
2:00 - CAT
|
||||
|
||||
# Republic of the Congo
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Brazzaville 1:01:08 - LMT 1912
|
||||
1:00 - WAT
|
||||
|
||||
# Cote D'Ivoire
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Abidjan -0:16:08 - LMT 1912
|
||||
0:00 - GMT
|
||||
|
||||
# Djibouti
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul
|
||||
3:00 - EAT
|
||||
|
||||
###############################################################################
|
||||
|
||||
# Egypt
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Egypt 1940 only - Jul 15 0:00 1:00 S
|
||||
Rule Egypt 1940 only - Oct 1 0:00 0 -
|
||||
Rule Egypt 1941 only - Apr 15 0:00 1:00 S
|
||||
Rule Egypt 1941 only - Sep 16 0:00 0 -
|
||||
Rule Egypt 1942 1944 - Apr 1 0:00 1:00 S
|
||||
Rule Egypt 1942 only - Oct 27 0:00 0 -
|
||||
Rule Egypt 1943 1945 - Nov 1 0:00 0 -
|
||||
Rule Egypt 1945 only - Apr 16 0:00 1:00 S
|
||||
Rule Egypt 1957 only - May 10 0:00 1:00 S
|
||||
Rule Egypt 1957 1958 - Oct 1 0:00 0 -
|
||||
Rule Egypt 1958 only - May 1 0:00 1:00 S
|
||||
Rule Egypt 1959 1981 - May 1 1:00 1:00 S
|
||||
Rule Egypt 1959 1965 - Sep 30 3:00 0 -
|
||||
Rule Egypt 1966 1994 - Oct 1 3:00 0 -
|
||||
Rule Egypt 1982 only - Jul 25 1:00 1:00 S
|
||||
Rule Egypt 1983 only - Jul 12 1:00 1:00 S
|
||||
Rule Egypt 1984 1988 - May 1 1:00 1:00 S
|
||||
Rule Egypt 1989 only - May 6 1:00 1:00 S
|
||||
Rule Egypt 1990 1994 - May 1 1:00 1:00 S
|
||||
# IATA (after 1990) says transitions are at 0:00.
|
||||
# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
|
||||
Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S
|
||||
Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 -
|
||||
# From Steffen Thorsen (2006-09-19):
|
||||
# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
|
||||
# Egypt will turn back clocks by one hour at the midnight of Thursday
|
||||
# after observing the daylight saving time since May.
|
||||
# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
|
||||
Rule Egypt 2006 only - Sep 21 23:00s 0 -
|
||||
Rule Egypt 2007 max - Sep lastThu 23:00s 0 -
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
|
||||
2:00 Egypt EE%sT
|
||||
|
||||
# Equatorial Guinea
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Malabo 0:35:08 - LMT 1912
|
||||
0:00 - GMT 1963 Dec 15
|
||||
1:00 - WAT
|
||||
|
||||
# Eritrea
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Asmara 2:35:32 - LMT 1870
|
||||
2:35:32 - AMT 1890 # Asmara Mean Time
|
||||
2:35:20 - ADMT 1936 May 5 # Adis Dera MT
|
||||
3:00 - EAT
|
||||
|
||||
# Ethiopia
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
|
||||
# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
|
||||
# We'll guess that 38E50 is for Adis Dera.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Addis_Ababa 2:34:48 - LMT 1870
|
||||
2:35:20 - ADMT 1936 May 5 # Adis Dera MT
|
||||
3:00 - EAT
|
||||
|
||||
# Gabon
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Libreville 0:37:48 - LMT 1912
|
||||
1:00 - WAT
|
||||
|
||||
# Gambia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Banjul -1:06:36 - LMT 1912
|
||||
-1:06:36 - BMT 1935 # Banjul Mean Time
|
||||
-1:00 - WAT 1964
|
||||
0:00 - GMT
|
||||
|
||||
# Ghana
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Whitman says DST was observed from 1931 to ``the present'';
|
||||
# go with Shanks & Pottenger.
|
||||
Rule Ghana 1936 1942 - Sep 1 0:00 0:20 GHST
|
||||
Rule Ghana 1936 1942 - Dec 31 0:00 0 GMT
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Accra -0:00:52 - LMT 1918
|
||||
0:00 Ghana %s
|
||||
|
||||
# Guinea
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Conakry -0:54:52 - LMT 1912
|
||||
0:00 - GMT 1934 Feb 26
|
||||
-1:00 - WAT 1960
|
||||
0:00 - GMT
|
||||
|
||||
# Guinea-Bissau
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Bissau -1:02:20 - LMT 1911 May 26
|
||||
-1:00 - WAT 1975
|
||||
0:00 - GMT
|
||||
|
||||
# Kenya
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - BEAT 1940
|
||||
2:44:45 - BEAUT 1960
|
||||
3:00 - EAT
|
||||
|
||||
# Lesotho
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Maseru 1:50:00 - LMT 1903 Mar
|
||||
2:00 - SAST 1943 Sep 19 2:00
|
||||
2:00 1:00 SAST 1944 Mar 19 2:00
|
||||
2:00 - SAST
|
||||
|
||||
# Liberia
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# In 1972 Liberia was the last country to switch
|
||||
# from a UTC offset that was not a multiple of 15 or 20 minutes.
|
||||
# Howse reports that it was in honor of their president's birthday.
|
||||
# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
|
||||
# go with Shanks & Pottenger.
|
||||
# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
|
||||
# Whitman each report -0:44:30; go with the more precise figure.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Monrovia -0:43:08 - LMT 1882
|
||||
-0:43:08 - MMT 1919 Mar # Monrovia Mean Time
|
||||
-0:44:30 - LRT 1972 May # Liberia Time
|
||||
0:00 - GMT
|
||||
|
||||
###############################################################################
|
||||
|
||||
# Libya
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Libya 1951 only - Oct 14 2:00 1:00 S
|
||||
Rule Libya 1952 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1953 only - Oct 9 2:00 1:00 S
|
||||
Rule Libya 1954 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1955 only - Sep 30 0:00 1:00 S
|
||||
Rule Libya 1956 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1982 1984 - Apr 1 0:00 1:00 S
|
||||
Rule Libya 1982 1985 - Oct 1 0:00 0 -
|
||||
Rule Libya 1985 only - Apr 6 0:00 1:00 S
|
||||
Rule Libya 1986 only - Apr 4 0:00 1:00 S
|
||||
Rule Libya 1986 only - Oct 3 0:00 0 -
|
||||
Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
|
||||
Rule Libya 1987 1989 - Oct 1 0:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tripoli 0:52:44 - LMT 1920
|
||||
1:00 Libya CE%sT 1959
|
||||
2:00 - EET 1982
|
||||
1:00 Libya CE%sT 1990 May 4
|
||||
# The following entries are from Shanks & Pottenger;
|
||||
# the IATA SSIM data contain some obvious errors.
|
||||
2:00 - EET 1996 Sep 30
|
||||
1:00 - CET 1997 Apr 4
|
||||
1:00 1:00 CEST 1997 Oct 4
|
||||
2:00 - EET
|
||||
|
||||
# Madagascar
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul
|
||||
3:00 - EAT 1954 Feb 27 23:00s
|
||||
3:00 1:00 EAST 1954 May 29 23:00s
|
||||
3:00 - EAT
|
||||
|
||||
# Malawi
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
|
||||
# Mali
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Bamako -0:32:00 - LMT 1912
|
||||
0:00 - GMT 1934 Feb 26
|
||||
-1:00 - WAT 1960 Jun 20
|
||||
0:00 - GMT
|
||||
|
||||
# Mauritania
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Nouakchott -1:03:48 - LMT 1912
|
||||
0:00 - GMT 1934 Feb 26
|
||||
-1:00 - WAT 1960 Nov 28
|
||||
0:00 - GMT
|
||||
|
||||
# Mauritius
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
4:00 - MUT # Mauritius Time
|
||||
# Agalega Is, Rodriguez
|
||||
# no information; probably like Indian/Mauritius
|
||||
|
||||
# Mayotte
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
|
||||
3:00 - EAT
|
||||
|
||||
# Morocco
|
||||
# See the `europe' file for Spanish Morocco (Africa/Ceuta).
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Morocco 1939 only - Sep 12 0:00 1:00 S
|
||||
Rule Morocco 1939 only - Nov 19 0:00 0 -
|
||||
Rule Morocco 1940 only - Feb 25 0:00 1:00 S
|
||||
Rule Morocco 1945 only - Nov 18 0:00 0 -
|
||||
Rule Morocco 1950 only - Jun 11 0:00 1:00 S
|
||||
Rule Morocco 1950 only - Oct 29 0:00 0 -
|
||||
Rule Morocco 1967 only - Jun 3 12:00 1:00 S
|
||||
Rule Morocco 1967 only - Oct 1 0:00 0 -
|
||||
Rule Morocco 1974 only - Jun 24 0:00 1:00 S
|
||||
Rule Morocco 1974 only - Sep 1 0:00 0 -
|
||||
Rule Morocco 1976 1977 - May 1 0:00 1:00 S
|
||||
Rule Morocco 1976 only - Aug 1 0:00 0 -
|
||||
Rule Morocco 1977 only - Sep 28 0:00 0 -
|
||||
Rule Morocco 1978 only - Jun 1 0:00 1:00 S
|
||||
Rule Morocco 1978 only - Aug 4 0:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
||||
0:00 Morocco WE%sT 1984 Mar 16
|
||||
1:00 - CET 1986
|
||||
0:00 - WET
|
||||
# Western Sahara
|
||||
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan
|
||||
-1:00 - WAT 1976 Apr 14
|
||||
0:00 - WET
|
||||
|
||||
# Mozambique
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
|
||||
# Namibia
|
||||
# The 1994-04-03 transition is from Shanks & Pottenger.
|
||||
# Shanks & Pottenger report no DST after 1998-04; go with IATA.
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S
|
||||
Rule Namibia 1995 max - Apr Sun>=1 2:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||
1:30 - SWAT 1903 Mar # SW Africa Time
|
||||
2:00 - SAST 1942 Sep 20 2:00
|
||||
2:00 1:00 SAST 1943 Mar 21 2:00
|
||||
2:00 - SAST 1990 Mar 21 # independence
|
||||
2:00 - CAT 1994 Apr 3
|
||||
1:00 Namibia WA%sT
|
||||
|
||||
# Niger
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Niamey 0:08:28 - LMT 1912
|
||||
-1:00 - WAT 1934 Feb 26
|
||||
0:00 - GMT 1960
|
||||
1:00 - WAT
|
||||
|
||||
# Nigeria
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lagos 0:13:36 - LMT 1919 Sep
|
||||
1:00 - WAT
|
||||
|
||||
# Reunion
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
|
||||
4:00 - RET # Reunion Time
|
||||
#
|
||||
# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
|
||||
# The following information about them is taken from
|
||||
# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
|
||||
# no longer available as of 1999-08-17).
|
||||
# We have no info about their time zone histories.
|
||||
#
|
||||
# Bassas da India - uninhabited
|
||||
# Europa Island - inhabited from 1905 to 1910 by two families
|
||||
# Glorioso Is - inhabited until at least 1958
|
||||
# Juan de Nova - uninhabited
|
||||
# Tromelin - inhabited until at least 1958
|
||||
|
||||
# Rwanda
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Kigali 2:00:16 - LMT 1935 Jun
|
||||
2:00 - CAT
|
||||
|
||||
# St Helena
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown
|
||||
-0:22:48 - JMT 1951 # Jamestown Mean Time
|
||||
0:00 - GMT
|
||||
# The other parts of the St Helena territory are similar:
|
||||
# Tristan da Cunha: on GMT, say Whitman and the CIA
|
||||
# Ascension: on GMT, says usno1995 and the CIA
|
||||
# Gough (scientific station since 1955; sealers wintered previously):
|
||||
# on GMT, says the CIA
|
||||
# Inaccessible, Nightingale: no information, but probably GMT
|
||||
|
||||
# Sao Tome and Principe
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Sao_Tome 0:26:56 - LMT 1884
|
||||
-0:36:32 - LMT 1912 # Lisbon Mean Time
|
||||
0:00 - GMT
|
||||
|
||||
# Senegal
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Dakar -1:09:44 - LMT 1912
|
||||
-1:00 - WAT 1941 Jun
|
||||
0:00 - GMT
|
||||
|
||||
# Seychelles
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
4:00 - SCT # Seychelles Time
|
||||
# From Paul Eggert (2001-05-30):
|
||||
# Aldabra, Farquhar, and Desroches, originally dependencies of the
|
||||
# Seychelles, were transferred to the British Indian Ocean Territory
|
||||
# in 1965 and returned to Seychelles control in 1976. We don't know
|
||||
# whether this affected their time zone, so omit this for now.
|
||||
# Possibly the islands were uninhabited.
|
||||
|
||||
# Sierra Leone
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
|
||||
Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST
|
||||
Rule SL 1935 1942 - Oct 1 0:00 0 WAT
|
||||
Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST
|
||||
Rule SL 1957 1962 - Sep 1 0:00 0 GMT
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Freetown -0:53:00 - LMT 1882
|
||||
-0:53:00 - FMT 1913 Jun # Freetown Mean Time
|
||||
-1:00 SL %s 1957
|
||||
0:00 SL %s
|
||||
|
||||
# Somalia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov
|
||||
3:00 - EAT 1931
|
||||
2:30 - BEAT 1957
|
||||
3:00 - EAT
|
||||
|
||||
# South Africa
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
|
||||
Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 SA SAST
|
||||
# Marion and Prince Edward Is
|
||||
# scientific station since 1947
|
||||
# no information
|
||||
|
||||
# Sudan
|
||||
#
|
||||
# From <a href="http://www.sunanews.net/sn13jane.html">
|
||||
# Sudan News Agency (2000-01-13)
|
||||
# </a>, also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
|
||||
# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
|
||||
# Saturday.... This was announced Thursday by Caretaker State Minister for
|
||||
# Manpower Abdul-Rahman Nur-Eddin.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Sudan 1970 only - May 1 0:00 1:00 S
|
||||
Rule Sudan 1970 1985 - Oct 15 0:00 0 -
|
||||
Rule Sudan 1971 only - Apr 30 0:00 1:00 S
|
||||
Rule Sudan 1972 1985 - Apr lastSun 0:00 1:00 S
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
|
||||
# Swaziland
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
|
||||
2:00 - SAST
|
||||
|
||||
# Tanzania
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931
|
||||
3:00 - EAT 1948
|
||||
2:44:45 - BEAUT 1961
|
||||
3:00 - EAT
|
||||
|
||||
# Togo
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lome 0:04:52 - LMT 1893
|
||||
0:00 - GMT
|
||||
|
||||
# Tunisia
|
||||
|
||||
# From Gwillim Law (2005-04-30):
|
||||
# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
|
||||
# this time in Tunisia. According to Yahoo France News
|
||||
# <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP
|
||||
# and dated 2005-04-26, "Tunisia has decided to advance its official time by
|
||||
# one hour, starting on Sunday, May 1. Henceforth, Tunisian time will be
|
||||
# UTC+2 instead of UTC+1. The change will take place at 23:00 UTC next
|
||||
# Saturday." (My translation)
|
||||
#
|
||||
# From Oscar van Vlijmen (2005-05-02):
|
||||
# LaPresse, the first national daily newspaper ...
|
||||
# <http://www.lapresse.tn/archives/archives280405/actualites/lheure.html>
|
||||
# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
|
||||
# 1h standard time.
|
||||
#
|
||||
# From Atef Loukil (2006-03-28):
|
||||
# The daylight saving time will be the same each year:
|
||||
# Beginning : the last Sunday of March at 02:00
|
||||
# Ending : the last Sunday of October at 03:00 ...
|
||||
# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
|
||||
Rule Tunisia 1939 only - Nov 18 23:00s 0 -
|
||||
Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
|
||||
Rule Tunisia 1941 only - Oct 6 0:00 0 -
|
||||
Rule Tunisia 1942 only - Mar 9 0:00 1:00 S
|
||||
Rule Tunisia 1942 only - Nov 2 3:00 0 -
|
||||
Rule Tunisia 1943 only - Mar 29 2:00 1:00 S
|
||||
Rule Tunisia 1943 only - Apr 17 2:00 0 -
|
||||
Rule Tunisia 1943 only - Apr 25 2:00 1:00 S
|
||||
Rule Tunisia 1943 only - Oct 4 2:00 0 -
|
||||
Rule Tunisia 1944 1945 - Apr Mon>=1 2:00 1:00 S
|
||||
Rule Tunisia 1944 only - Oct 8 0:00 0 -
|
||||
Rule Tunisia 1945 only - Sep 16 0:00 0 -
|
||||
Rule Tunisia 1977 only - Apr 30 0:00s 1:00 S
|
||||
Rule Tunisia 1977 only - Sep 24 0:00s 0 -
|
||||
Rule Tunisia 1978 only - May 1 0:00s 1:00 S
|
||||
Rule Tunisia 1978 only - Oct 1 0:00s 0 -
|
||||
Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S
|
||||
Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
|
||||
Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
|
||||
Rule Tunisia 1990 only - May 1 0:00s 1:00 S
|
||||
Rule Tunisia 2005 only - May 1 0:00s 1:00 S
|
||||
Rule Tunisia 2005 only - Sep 30 1:00s 0 -
|
||||
Rule Tunisia 2006 max - Mar lastSun 2:00s 1:00 S
|
||||
Rule Tunisia 2006 max - Oct lastSun 2:00s 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
1:00 Tunisia CE%sT
|
||||
|
||||
# Uganda
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Kampala 2:09:40 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - BEAT 1948
|
||||
2:44:45 - BEAUT 1957
|
||||
3:00 - EAT
|
||||
|
||||
# Zambia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
|
||||
# Zimbabwe
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Harare 2:04:12 - LMT 1903 Mar
|
||||
2:00 - CAT
|
325
commands/zoneinfo/antarctica
Normal file
325
commands/zoneinfo/antarctica
Normal file
|
@ -0,0 +1,325 @@
|
|||
# @(#)antarctica 8.3
|
||||
# <pre>
|
||||
|
||||
# From Paul Eggert (1999-11-15):
|
||||
# To keep things manageable, we list only locations occupied year-round; see
|
||||
# <a href="http://www.comnap.aq/comnap/comnap.nsf/P/Stations/">
|
||||
# COMNAP - Stations and Bases
|
||||
# </a>
|
||||
# and
|
||||
# <a href="http://www.spri.cam.ac.uk/bob/periant.htm">
|
||||
# Summary of the Peri-Antarctic Islands (1998-07-23)
|
||||
# </a>
|
||||
# for information.
|
||||
# Unless otherwise specified, we have no time zone information.
|
||||
#
|
||||
# Except for the French entries,
|
||||
# I made up all time zone abbreviations mentioned here; corrections welcome!
|
||||
# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
|
||||
|
||||
# These rules are stolen from the `europe' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule RussAQ 1981 1984 - Apr 1 0:00 1:00 S
|
||||
Rule RussAQ 1981 1983 - Oct 1 0:00 0 -
|
||||
Rule RussAQ 1984 1991 - Sep lastSun 2:00s 0 -
|
||||
Rule RussAQ 1985 1991 - Mar lastSun 2:00s 1:00 S
|
||||
Rule RussAQ 1992 only - Mar lastSat 23:00 1:00 S
|
||||
Rule RussAQ 1992 only - Sep lastSat 23:00 0 -
|
||||
Rule RussAQ 1993 max - Mar lastSun 2:00s 1:00 S
|
||||
Rule RussAQ 1993 1995 - Sep lastSun 2:00s 0 -
|
||||
Rule RussAQ 1996 max - Oct lastSun 2:00s 0 -
|
||||
|
||||
# These rules are stolen from the `southamerica' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
|
||||
Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
|
||||
Rule ArgAQ 1967 only - Apr 2 0:00 0 -
|
||||
Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S
|
||||
Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 -
|
||||
Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
|
||||
Rule ArgAQ 1974 only - May 1 0:00 0 -
|
||||
Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 -
|
||||
Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S
|
||||
Rule ChileAQ 1987 only - Apr 12 3:00u 0 -
|
||||
Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 -
|
||||
Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S
|
||||
Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S
|
||||
Rule ChileAQ 1990 only - Mar 18 3:00u 0 -
|
||||
Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S
|
||||
Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 -
|
||||
Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S
|
||||
Rule ChileAQ 1997 only - Mar 30 3:00u 0 -
|
||||
Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 -
|
||||
Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S
|
||||
Rule ChileAQ 1999 only - Apr 4 3:00u 0 -
|
||||
Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S
|
||||
Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 -
|
||||
|
||||
|
||||
# Argentina - year-round bases
|
||||
# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
|
||||
# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
|
||||
# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
|
||||
# Marambio, Seymour I, -6414-05637, since 1969-10-29
|
||||
# Orcadas, Laurie I, -6016-04444, since 1904-02-22
|
||||
# San Martin, Debenham I, -6807-06708, since 1951-03-21
|
||||
# (except 1960-03 / 1976-03-21)
|
||||
|
||||
# Australia - territories
|
||||
# Heard Island, McDonald Islands (uninhabited)
|
||||
# previously sealers and scientific personnel wintered
|
||||
# <a href="http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html">
|
||||
# Margaret Turner reports
|
||||
# </a> (1999-09-30) that they're UTC+5, with no DST;
|
||||
# presumably this is when they have visitors.
|
||||
#
|
||||
# year-round bases
|
||||
# Casey, Bailey Peninsula, -6617+11032, since 1969
|
||||
# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
|
||||
# (except 1964-11 - 1969-02)
|
||||
# Mawson, Holme Bay, -6736+06253, since 1954-02-13
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Casey 0 - zzz 1969
|
||||
8:00 - WST # Western (Aus) Standard Time
|
||||
Zone Antarctica/Davis 0 - zzz 1957 Jan 13
|
||||
7:00 - DAVT 1964 Nov # Davis Time
|
||||
0 - zzz 1969 Feb
|
||||
7:00 - DAVT
|
||||
Zone Antarctica/Mawson 0 - zzz 1954 Feb 13
|
||||
6:00 - MAWT # Mawson Time
|
||||
# References:
|
||||
# <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
|
||||
# Casey Weather (1998-02-26)
|
||||
# </a>
|
||||
# <a href="http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html">
|
||||
# Davis Station, Antarctica (1998-02-26)
|
||||
# </a>
|
||||
# <a href="http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html">
|
||||
# Mawson Station, Antarctica (1998-02-25)
|
||||
# </a>
|
||||
|
||||
# Brazil - year-round base
|
||||
# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
|
||||
|
||||
# Chile - year-round bases and towns
|
||||
# Escudero, South Shetland Is, -621157-0585735, since 1994
|
||||
# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
|
||||
# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
|
||||
# Capitan Arturo Prat, -6230-05941
|
||||
# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
|
||||
# These locations have always used Santiago time; use TZ='America/Santiago'.
|
||||
|
||||
# China - year-round bases
|
||||
# Great Wall, King George Island, -6213-05858, since 1985-02-20
|
||||
# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
|
||||
|
||||
# France - year-round bases
|
||||
#
|
||||
# From Antoine Leca (1997-01-20):
|
||||
# Time data are from Nicole Pailleau at the IFRTP
|
||||
# (French Institute for Polar Research and Technology).
|
||||
# She confirms that French Southern Territories and Terre Adelie bases
|
||||
# don't observe daylight saving time, even if Terre Adelie supplies came
|
||||
# from Tasmania.
|
||||
#
|
||||
# French Southern Territories with year-round inhabitants
|
||||
#
|
||||
# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
|
||||
# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
|
||||
# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
|
||||
# whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
|
||||
#
|
||||
# St Paul Island - near Amsterdam, uninhabited
|
||||
# fishing stations operated variously 1819/1931
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Kerguelen 0 - zzz 1950 # Port-aux-Francais
|
||||
5:00 - TFT # ISO code TF Time
|
||||
#
|
||||
# year-round base in the main continent
|
||||
# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
|
||||
#
|
||||
# Another base at Port-Martin, 50km east, began operation in 1947.
|
||||
# It was destroyed by fire on 1952-01-14.
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/DumontDUrville 0 - zzz 1947
|
||||
10:00 - PMT 1952 Jan 14 # Port-Martin Time
|
||||
0 - zzz 1956 Nov
|
||||
10:00 - DDUT # Dumont-d'Urville Time
|
||||
# Reference:
|
||||
# <a href="http://en.wikipedia.org/wiki/Dumont_d'Urville_Station">
|
||||
# Dumont d'Urville Station (2005-12-05)
|
||||
# </a>
|
||||
|
||||
# Germany - year-round base
|
||||
# Georg von Neumayer, -7039-00815
|
||||
|
||||
# India - year-round base
|
||||
# Dakshin Gangotri, -7005+01200
|
||||
|
||||
# Japan - year-round bases
|
||||
# Dome Fuji, -7719+03942
|
||||
# Syowa, -690022+0393524
|
||||
#
|
||||
# From Hideyuki Suzuki (1999-02-06):
|
||||
# In all Japanese stations, +0300 is used as the standard time.
|
||||
#
|
||||
# Syowa station, which is the first antarctic station of Japan,
|
||||
# was established on 1957-01-29. Since Syowa station is still the main
|
||||
# station of Japan, it's appropriate for the principal location.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Syowa 0 - zzz 1957 Jan 29
|
||||
3:00 - SYOT # Syowa Time
|
||||
# See:
|
||||
# <a href="http://www.nipr.ac.jp/english/ara01.html">
|
||||
# NIPR Antarctic Research Activities (1999-08-17)
|
||||
# </a>
|
||||
|
||||
# S Korea - year-round base
|
||||
# King Sejong, King George Island, -6213-05847, since 1988
|
||||
|
||||
# New Zealand - claims
|
||||
# Balleny Islands (never inhabited)
|
||||
# Scott Island (never inhabited)
|
||||
#
|
||||
# year-round base
|
||||
# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
|
||||
#
|
||||
# These rules for New Zealand are stolen from the `australasia' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D
|
||||
Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D
|
||||
Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D
|
||||
Rule NZAQ 1990 max - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule NZAQ 1975 only - Feb 23 2:00s 0 S
|
||||
Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S
|
||||
Rule NZAQ 1990 max - Mar Sun>=15 2:00s 0 S
|
||||
|
||||
# Norway - territories
|
||||
# Bouvet (never inhabited)
|
||||
#
|
||||
# claims
|
||||
# Peter I Island (never inhabited)
|
||||
|
||||
# Poland - year-round base
|
||||
# Arctowski, King George Island, -620945-0582745, since 1977
|
||||
|
||||
# Russia - year-round bases
|
||||
# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
|
||||
# Mirny, Davis coast, -6633+09301, since 1956-02
|
||||
# Molodezhnaya, Alasheyev Bay, -6740+04551,
|
||||
# year-round from 1962-02 to 1999-07-01
|
||||
# Novolazarevskaya, Queen Maud Land, -7046+01150,
|
||||
# year-round from 1960/61 to 1992
|
||||
|
||||
# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
|
||||
# <a href="http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP">
|
||||
# From Craig Mundell (1994-12-15)</a>:
|
||||
# Vostok, which is one of the Russian stations, is set on the same
|
||||
# time as Moscow, Russia.
|
||||
#
|
||||
# From Lee Hotz (2001-03-08):
|
||||
# I queried the folks at Columbia who spent the summer at Vostok and this is
|
||||
# what they had to say about time there:
|
||||
# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
|
||||
# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
|
||||
# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
|
||||
# of GMT). This is a time zone I think two hours east of Moscow. The
|
||||
# natural time zone is in between the two: 8 hours ahead of GMT.''
|
||||
#
|
||||
# From Paul Eggert (2001-05-04):
|
||||
# This seems to be hopelessly confusing, so I asked Lee Hotz about it
|
||||
# in person. He said that some Antartic locations set their local
|
||||
# time so that noon is the warmest part of the day, and that this
|
||||
# changes during the year and does not necessarily correspond to mean
|
||||
# solar noon. So the Vostok time might have been whatever the clocks
|
||||
# happened to be during their visit. So we still don't really know what time
|
||||
# it is at Vostok. But we'll guess UTC+6.
|
||||
#
|
||||
Zone Antarctica/Vostok 0 - zzz 1957 Dec 16
|
||||
6:00 - VOST # Vostok time
|
||||
|
||||
# S Africa - year-round bases
|
||||
# Marion Island, -4653+03752
|
||||
# Sanae, -7141-00250
|
||||
|
||||
# UK
|
||||
#
|
||||
# British Antarctic Territories (BAT) claims
|
||||
# South Orkney Islands
|
||||
# scientific station from 1903
|
||||
# whaling station at Signy I 1920/1926
|
||||
# South Shetland Islands
|
||||
#
|
||||
# year-round bases
|
||||
# Bird Island, South Georgia, -5400-03803, since 1983
|
||||
# Deception Island, -6259-06034, whaling station 1912/1931,
|
||||
# scientific station 1943/1967,
|
||||
# previously sealers and a scientific expedition wintered by accident,
|
||||
# and a garrison was deployed briefly
|
||||
# Halley, Coates Land, -7535-02604, since 1956-01-06
|
||||
# Halley is on a moving ice shelf and is periodically relocated
|
||||
# so that it is never more than 10km from its nominal location.
|
||||
# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
|
||||
#
|
||||
# From Paul Eggert (2002-10-22)
|
||||
# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
|
||||
-3:00 - ROTT # Rothera time
|
||||
|
||||
# Uruguay - year round base
|
||||
# Artigas, King George Island, -621104-0585107
|
||||
|
||||
# USA - year-round bases
|
||||
#
|
||||
# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
|
||||
#
|
||||
# From Ethan Dicks (1996-10-06):
|
||||
# It keeps the same time as Punta Arenas, Chile, because, just like us
|
||||
# and the South Pole, that's the other end of their supply line....
|
||||
# I verified with someone who was there that since 1980,
|
||||
# Palmer has followed Chile. Prior to that, before the Falklands War,
|
||||
# Palmer used to be supplied from Argentina.
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Palmer 0 - zzz 1965
|
||||
-4:00 ArgAQ AR%sT 1969 Oct 5
|
||||
-3:00 ArgAQ AR%sT 1982 May
|
||||
-4:00 ChileAQ CL%sT
|
||||
#
|
||||
#
|
||||
# McMurdo, Ross Island, since 1955-12
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/McMurdo 0 - zzz 1956
|
||||
12:00 NZAQ NZ%sT
|
||||
#
|
||||
# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
|
||||
#
|
||||
# From Paul Eggert (1996-09-03):
|
||||
# Normally it wouldn't have a separate entry, since it's like the
|
||||
# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
|
||||
#
|
||||
# From Chris Carrier (1996-06-27):
|
||||
# Siple, the first commander of the South Pole station,
|
||||
# stated that he would have liked to have kept GMT at the station,
|
||||
# but that he found it more convenient to keep GMT+12
|
||||
# as supplies for the station were coming from McMurdo Sound,
|
||||
# which was on GMT+12 because New Zealand was on GMT+12 all year
|
||||
# at that time (1957). (Source: Siple's book 90 degrees SOUTH.)
|
||||
#
|
||||
# From Susan Smith
|
||||
# http://www.cybertours.com/whs/pole10.html
|
||||
# (1995-11-13 16:24:56 +1300, no longer available):
|
||||
# We use the same time as McMurdo does.
|
||||
# And they use the same time as Christchurch, NZ does....
|
||||
# One last quirk about South Pole time.
|
||||
# All the electric clocks are usually wrong.
|
||||
# Something about the generators running at 60.1hertz or something
|
||||
# makes all of the clocks run fast. So every couple of days,
|
||||
# we have to go around and set them back 5 minutes or so.
|
||||
# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
|
||||
#
|
||||
Link Antarctica/McMurdo Antarctica/South_Pole
|
129
commands/zoneinfo/asctime.c
Normal file
129
commands/zoneinfo/asctime.c
Normal file
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
** This file is in the public domain, so clarified as of
|
||||
** 1996-06-05 by Arthur David Olson.
|
||||
*/
|
||||
|
||||
/*
|
||||
** Avoid the temptation to punt entirely to strftime;
|
||||
** the output of strftime is supposed to be locale specific
|
||||
** whereas the output of asctime is supposed to be constant.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char elsieid[] = "@(#)asctime.c 7.32";
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
/*LINTLIBRARY*/
|
||||
|
||||
#include "private.h"
|
||||
#include "tzfile.h"
|
||||
|
||||
/*
|
||||
** Some systems only handle "%.2d"; others only handle "%02d";
|
||||
** "%02.2d" makes (most) everybody happy.
|
||||
** At least some versions of gcc warn about the %02.2d; ignore the warning.
|
||||
*/
|
||||
/*
|
||||
** All years associated with 32-bit time_t values are exactly four digits long;
|
||||
** some years associated with 64-bit time_t values are not.
|
||||
** Vintage programs are coded for years that are always four digits long
|
||||
** and may assume that the newline always lands in the same place.
|
||||
** For years that are less than four digits, we pad the output with
|
||||
** leading zeroes to get the newline in the traditional place.
|
||||
** The -4 ensures that we get four characters of output even if
|
||||
** we call a strftime variant that produces fewer characters for some years.
|
||||
** The ISO C 1999 and POSIX 1003.1-2004 standards prohibit padding the year,
|
||||
** but many implementations pad anyway; most likely the standards are buggy.
|
||||
*/
|
||||
#define ASCTIME_FMT "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %-4s\n"
|
||||
/*
|
||||
** For years that are more than four digits we put extra spaces before the year
|
||||
** so that code trying to overwrite the newline won't end up overwriting
|
||||
** a digit within a year and truncating the year (operating on the assumption
|
||||
** that no output is better than wrong output).
|
||||
*/
|
||||
#define ASCTIME_FMT_B "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %s\n"
|
||||
|
||||
#define STD_ASCTIME_BUF_SIZE 26
|
||||
/*
|
||||
** Big enough for something such as
|
||||
** ??? ???-2147483648 -2147483648:-2147483648:-2147483648 -2147483648\n
|
||||
** (two three-character abbreviations, five strings denoting integers,
|
||||
** seven explicit spaces, two explicit colons, a newline,
|
||||
** and a trailing ASCII nul).
|
||||
** The values above are for systems where an int is 32 bits and are provided
|
||||
** as an example; the define below calculates the maximum for the system at
|
||||
** hand.
|
||||
*/
|
||||
#define MAX_ASCTIME_BUF_SIZE (2*3+5*INT_STRLEN_MAXIMUM(int)+7+2+1+1)
|
||||
|
||||
static char buf_asctime[MAX_ASCTIME_BUF_SIZE];
|
||||
|
||||
/*
|
||||
** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
|
||||
*/
|
||||
|
||||
char *
|
||||
asctime_r(timeptr, buf)
|
||||
register const struct tm * timeptr;
|
||||
char * buf;
|
||||
{
|
||||
static const char wday_name[][3] = {
|
||||
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
|
||||
};
|
||||
static const char mon_name[][3] = {
|
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
|
||||
};
|
||||
register const char * wn;
|
||||
register const char * mn;
|
||||
char year[INT_STRLEN_MAXIMUM(int) + 2];
|
||||
char result[MAX_ASCTIME_BUF_SIZE];
|
||||
|
||||
if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK)
|
||||
wn = "???";
|
||||
else wn = wday_name[timeptr->tm_wday];
|
||||
if (timeptr->tm_mon < 0 || timeptr->tm_mon >= MONSPERYEAR)
|
||||
mn = "???";
|
||||
else mn = mon_name[timeptr->tm_mon];
|
||||
/*
|
||||
** Use strftime's %Y to generate the year, to avoid overflow problems
|
||||
** when computing timeptr->tm_year + TM_YEAR_BASE.
|
||||
** Assume that strftime is unaffected by other out-of-range members
|
||||
** (e.g., timeptr->tm_mday) when processing "%Y".
|
||||
*/
|
||||
(void) strftime(year, sizeof year, "%Y", timeptr);
|
||||
/*
|
||||
** We avoid using snprintf since it's not available on all systems.
|
||||
*/
|
||||
(void) sprintf(result,
|
||||
((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B),
|
||||
wn, mn,
|
||||
timeptr->tm_mday, timeptr->tm_hour,
|
||||
timeptr->tm_min, timeptr->tm_sec,
|
||||
year);
|
||||
if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) {
|
||||
(void) strcpy(buf, result);
|
||||
return buf;
|
||||
} else {
|
||||
#ifdef EOVERFLOW
|
||||
errno = EOVERFLOW;
|
||||
#else /* !defined EOVERFLOW */
|
||||
errno = EINVAL;
|
||||
#endif /* !defined EOVERFLOW */
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
|
||||
*/
|
||||
|
||||
char *
|
||||
asctime(timeptr)
|
||||
register const struct tm * timeptr;
|
||||
{
|
||||
return asctime_r(timeptr, buf_asctime);
|
||||
}
|
1787
commands/zoneinfo/asia
Normal file
1787
commands/zoneinfo/asia
Normal file
File diff suppressed because it is too large
Load diff
1431
commands/zoneinfo/australasia
Normal file
1431
commands/zoneinfo/australasia
Normal file
File diff suppressed because it is too large
Load diff
109
commands/zoneinfo/backward
Normal file
109
commands/zoneinfo/backward
Normal file
|
@ -0,0 +1,109 @@
|
|||
# @(#)backward 8.3
|
||||
|
||||
# This file provides links between current names for time zones
|
||||
# and their old names. Many names changed in late 1993.
|
||||
|
||||
Link Africa/Asmara Africa/Asmera
|
||||
Link Africa/Bamako Africa/Timbuktu
|
||||
Link America/Argentina/Catamarca America/Argentina/ComodRivadavia
|
||||
Link America/Adak America/Atka
|
||||
Link America/Argentina/Buenos_Aires America/Buenos_Aires
|
||||
Link America/Argentina/Catamarca America/Catamarca
|
||||
Link America/Atikokan America/Coral_Harbour
|
||||
Link America/Argentina/Cordoba America/Cordoba
|
||||
Link America/Tijuana America/Ensenada
|
||||
Link America/Indiana/Indianapolis America/Fort_Wayne
|
||||
Link America/Indiana/Indianapolis America/Indianapolis
|
||||
Link America/Argentina/Jujuy America/Jujuy
|
||||
Link America/Indiana/Knox America/Knox_IN
|
||||
Link America/Kentucky/Louisville America/Louisville
|
||||
Link America/Argentina/Mendoza America/Mendoza
|
||||
Link America/Rio_Branco America/Porto_Acre
|
||||
Link America/Argentina/Cordoba America/Rosario
|
||||
Link America/St_Thomas America/Virgin
|
||||
Link Asia/Ashgabat Asia/Ashkhabad
|
||||
Link Asia/Chongqing Asia/Chungking
|
||||
Link Asia/Dhaka Asia/Dacca
|
||||
Link Asia/Macau Asia/Macao
|
||||
Link Asia/Jerusalem Asia/Tel_Aviv
|
||||
Link Asia/Thimphu Asia/Thimbu
|
||||
Link Asia/Makassar Asia/Ujung_Pandang
|
||||
Link Asia/Ulaanbaatar Asia/Ulan_Bator
|
||||
Link Atlantic/Faroe Atlantic/Faeroe
|
||||
Link Australia/Sydney Australia/ACT
|
||||
Link Australia/Sydney Australia/Canberra
|
||||
Link Australia/Lord_Howe Australia/LHI
|
||||
Link Australia/Sydney Australia/NSW
|
||||
Link Australia/Darwin Australia/North
|
||||
Link Australia/Brisbane Australia/Queensland
|
||||
Link Australia/Adelaide Australia/South
|
||||
Link Australia/Hobart Australia/Tasmania
|
||||
Link Australia/Melbourne Australia/Victoria
|
||||
Link Australia/Perth Australia/West
|
||||
Link Australia/Broken_Hill Australia/Yancowinna
|
||||
Link America/Rio_Branco Brazil/Acre
|
||||
Link America/Noronha Brazil/DeNoronha
|
||||
Link America/Sao_Paulo Brazil/East
|
||||
Link America/Manaus Brazil/West
|
||||
Link America/Halifax Canada/Atlantic
|
||||
Link America/Winnipeg Canada/Central
|
||||
Link America/Regina Canada/East-Saskatchewan
|
||||
Link America/Toronto Canada/Eastern
|
||||
Link America/Edmonton Canada/Mountain
|
||||
Link America/St_Johns Canada/Newfoundland
|
||||
Link America/Vancouver Canada/Pacific
|
||||
Link America/Regina Canada/Saskatchewan
|
||||
Link America/Whitehorse Canada/Yukon
|
||||
Link America/Santiago Chile/Continental
|
||||
Link Pacific/Easter Chile/EasterIsland
|
||||
Link America/Havana Cuba
|
||||
Link Africa/Cairo Egypt
|
||||
Link Europe/Dublin Eire
|
||||
Link Europe/London Europe/Belfast
|
||||
Link Europe/Chisinau Europe/Tiraspol
|
||||
Link Europe/London GB
|
||||
Link Europe/London GB-Eire
|
||||
Link Etc/GMT GMT+0
|
||||
Link Etc/GMT GMT-0
|
||||
Link Etc/GMT GMT0
|
||||
Link Etc/GMT Greenwich
|
||||
Link Asia/Hong_Kong Hongkong
|
||||
Link Atlantic/Reykjavik Iceland
|
||||
Link Asia/Tehran Iran
|
||||
Link Asia/Jerusalem Israel
|
||||
Link America/Jamaica Jamaica
|
||||
Link Asia/Tokyo Japan
|
||||
Link Pacific/Kwajalein Kwajalein
|
||||
Link Africa/Tripoli Libya
|
||||
Link America/Tijuana Mexico/BajaNorte
|
||||
Link America/Mazatlan Mexico/BajaSur
|
||||
Link America/Mexico_City Mexico/General
|
||||
Link Pacific/Auckland NZ
|
||||
Link Pacific/Chatham NZ-CHAT
|
||||
Link America/Denver Navajo
|
||||
Link Asia/Shanghai PRC
|
||||
Link Pacific/Pago_Pago Pacific/Samoa
|
||||
Link Pacific/Truk Pacific/Yap
|
||||
Link Europe/Warsaw Poland
|
||||
Link Europe/Lisbon Portugal
|
||||
Link Asia/Taipei ROC
|
||||
Link Asia/Seoul ROK
|
||||
Link Asia/Singapore Singapore
|
||||
Link Europe/Istanbul Turkey
|
||||
Link Etc/UCT UCT
|
||||
Link America/Anchorage US/Alaska
|
||||
Link America/Adak US/Aleutian
|
||||
Link America/Phoenix US/Arizona
|
||||
Link America/Chicago US/Central
|
||||
Link America/Indiana/Indianapolis US/East-Indiana
|
||||
Link America/New_York US/Eastern
|
||||
Link Pacific/Honolulu US/Hawaii
|
||||
Link America/Indiana/Knox US/Indiana-Starke
|
||||
Link America/Detroit US/Michigan
|
||||
Link America/Denver US/Mountain
|
||||
Link America/Los_Angeles US/Pacific
|
||||
Link Pacific/Pago_Pago US/Samoa
|
||||
Link Etc/UTC UTC
|
||||
Link Etc/UTC Universal
|
||||
Link Europe/Moscow W-SU
|
||||
Link Etc/UTC Zulu
|
159
commands/zoneinfo/checktab.awk
Normal file
159
commands/zoneinfo/checktab.awk
Normal file
|
@ -0,0 +1,159 @@
|
|||
# Check tz tables for consistency.
|
||||
|
||||
# @(#)checktab.awk 1.7
|
||||
|
||||
# Contributed by Paul Eggert.
|
||||
|
||||
BEGIN {
|
||||
FS = "\t"
|
||||
|
||||
if (!iso_table) iso_table = "iso3166.tab"
|
||||
if (!zone_table) zone_table = "zone.tab"
|
||||
if (!want_warnings) want_warnings = -1
|
||||
|
||||
while (getline <iso_table) {
|
||||
iso_NR++
|
||||
if ($0 ~ /^#/) continue
|
||||
if (NF != 2) {
|
||||
printf "%s:%d: wrong number of columns\n", \
|
||||
iso_table, iso_NR >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
cc = $1
|
||||
name = $2
|
||||
if (cc !~ /^[A-Z][A-Z]$/) {
|
||||
printf "%s:%d: invalid country code `%s'\n", \
|
||||
iso_table, iso_NR, cc >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
if (cc <= cc0) {
|
||||
if (cc == cc0) {
|
||||
s = "duplicate";
|
||||
} else {
|
||||
s = "out of order";
|
||||
}
|
||||
|
||||
printf "%s:%d: country code `%s' is %s\n", \
|
||||
iso_table, iso_NR, cc, s \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
cc0 = cc
|
||||
if (name2cc[name]) {
|
||||
printf "%s:%d: `%s' and `%s' have the sname name\n", \
|
||||
iso_table, iso_NR, name2cc[name], cc \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
name2cc[name] = cc
|
||||
cc2name[cc] = name
|
||||
cc2NR[cc] = iso_NR
|
||||
}
|
||||
|
||||
zone_table = "zone.tab"
|
||||
cc0 = ""
|
||||
|
||||
while (getline <zone_table) {
|
||||
zone_NR++
|
||||
if ($0 ~ /^#/) continue
|
||||
if (NF != 3 && NF != 4) {
|
||||
printf "%s:%d: wrong number of columns\n", \
|
||||
zone_table, zone_NR >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
cc = $1
|
||||
coordinates = $2
|
||||
tz = $3
|
||||
comments = $4
|
||||
if (cc < cc0) {
|
||||
printf "%s:%d: country code `%s' is out of order\n", \
|
||||
zone_table, zone_NR, cc >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
cc0 = cc
|
||||
if (tz2cc[tz]) {
|
||||
printf "%s:%d: %s: duplicate TZ column\n", \
|
||||
zone_table, zone_NR, tz >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
tz2cc[tz] = cc
|
||||
tz2comments[tz] = comments
|
||||
tz2NR[tz] = zone_NR
|
||||
if (cc2name[cc]) {
|
||||
cc_used[cc]++
|
||||
} else {
|
||||
printf "%s:%d: %s: unknown country code\n", \
|
||||
zone_table, zone_NR, cc >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
if (coordinates !~ /^[-+][0-9][0-9][0-5][0-9][-+][01][0-9][0-9][0-5][0-9]$/ \
|
||||
&& coordinates !~ /^[-+][0-9][0-9][0-5][0-9][0-5][0-9][-+][01][0-9][0-9][0-5][0-9][0-5][0-9]$/) {
|
||||
printf "%s:%d: %s: invalid coordinates\n", \
|
||||
zone_table, zone_NR, coordinates >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
|
||||
for (tz in tz2cc) {
|
||||
if (cc_used[tz2cc[tz]] == 1) {
|
||||
if (tz2comments[tz]) {
|
||||
printf "%s:%d: unnecessary comment `%s'\n", \
|
||||
zone_table, tz2NR[tz], tz2comments[tz] \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
} else {
|
||||
if (!tz2comments[tz]) {
|
||||
printf "%s:%d: missing comment\n", \
|
||||
zone_table, tz2NR[tz] >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FS = " "
|
||||
}
|
||||
|
||||
{
|
||||
tz = ""
|
||||
if ($1 == "Zone") tz = $2
|
||||
if ($1 == "Link") {
|
||||
# Ignore Link commands if source and destination basenames
|
||||
# are identical, e.g. Europe/Istanbul versus Asia/Istanbul.
|
||||
src = $2
|
||||
dst = $3
|
||||
while ((i = index(src, "/"))) src = substr(src, i+1)
|
||||
while ((i = index(dst, "/"))) dst = substr(dst, i+1)
|
||||
if (src != dst) tz = $3
|
||||
}
|
||||
if (tz && tz ~ /\//) {
|
||||
if (!tz2cc[tz]) {
|
||||
printf "%s: no data for `%s'\n", zone_table, tz \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
zoneSeen[tz] = 1
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
for (tz in tz2cc) {
|
||||
if (!zoneSeen[tz]) {
|
||||
printf "%s:%d: no Zone table for `%s'\n", \
|
||||
zone_table, tz2NR[tz], tz >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
|
||||
if (0 < want_warnings) {
|
||||
for (cc in cc2name) {
|
||||
if (!cc_used[cc]) {
|
||||
printf "%s:%d: warning: " \
|
||||
"no Zone entries for %s (%s)\n", \
|
||||
iso_table, cc2NR[cc], cc, cc2name[cc]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit status
|
||||
}
|
175
commands/zoneinfo/date.1
Normal file
175
commands/zoneinfo/date.1
Normal file
|
@ -0,0 +1,175 @@
|
|||
.TH DATE 1
|
||||
.SH NAME
|
||||
date \- show and set date and time
|
||||
.SH SYNOPSIS
|
||||
.if n .nh
|
||||
.if n .na
|
||||
.B date
|
||||
[
|
||||
.B \-u
|
||||
] [
|
||||
.B \-c
|
||||
] [
|
||||
.B \-n
|
||||
] [
|
||||
.B \-d
|
||||
dsttype
|
||||
] [
|
||||
.B \-t
|
||||
minutes-west
|
||||
] [
|
||||
\fB\-a \fR[\fB+\fR|\fB-]\fIsss\fB.\fIfff\fR
|
||||
] [
|
||||
.BI + format
|
||||
] [
|
||||
\fR[\fIyyyy\fR]\fImmddhhmm\fR[\fIyy\fR][\fB.\fIss\fR]
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.I Date
|
||||
without arguments writes the date and time to the standard output in
|
||||
the form
|
||||
.ce 1
|
||||
Wed Mar 8 14:54:40 EST 1989
|
||||
.br
|
||||
with
|
||||
.B EST
|
||||
replaced by the local time zone's abbreviation
|
||||
(or by the abbreviation for the time zone specified in the
|
||||
.B TZ
|
||||
environment variable if set).
|
||||
The exact output format depends on the locale.
|
||||
.PP
|
||||
If a command-line argument starts with a plus sign
|
||||
.RB (` + '),
|
||||
the rest of the argument is used as a
|
||||
.I format
|
||||
that controls what appears in the output.
|
||||
In the format, when a percent sign
|
||||
.RB (` % ')
|
||||
appears,
|
||||
it and the character after it are not output,
|
||||
but rather identify part of the date or time
|
||||
to be output in a particular way
|
||||
(or identify a special character to output):
|
||||
.nf
|
||||
.sp
|
||||
.if t .in +.5i
|
||||
.if n .in +2
|
||||
.ta \w'%M\0\0'u +\w'Wed Mar 8 14:54:40 EST 1989\0\0'u
|
||||
Sample output Explanation
|
||||
%a Wed Abbreviated weekday name*
|
||||
%A Wednesday Full weekday name*
|
||||
%b Mar Abbreviated month name*
|
||||
%B March Full month name*
|
||||
%c Wed Mar 08 14:54:40 1989 Date and time*
|
||||
%C 19 Century
|
||||
%d 08 Day of month (always two digits)
|
||||
%D 03/08/89 Month/day/year (eight characters)
|
||||
%e 8 Day of month (leading zero blanked)
|
||||
%h Mar Abbreviated month name*
|
||||
%H 14 24-hour-clock hour (two digits)
|
||||
%I 02 12-hour-clock hour (two digits)
|
||||
%j 067 Julian day number (three digits)
|
||||
%k 2 12-hour-clock hour (leading zero blanked)
|
||||
%l 14 24-hour-clock hour (leading zero blanked)
|
||||
%m 03 Month number (two digits)
|
||||
%M 54 Minute (two digits)
|
||||
%n \\n newline character
|
||||
%p PM AM/PM designation
|
||||
%r 02:54:40 PM Hour:minute:second AM/PM designation
|
||||
%R 14:54 Hour:minute
|
||||
%S 40 Second (two digits)
|
||||
%t \\t tab character
|
||||
%T 14:54:40 Hour:minute:second
|
||||
%U 10 Sunday-based week number (two digits)
|
||||
%w 3 Day number (one digit, Sunday is 0)
|
||||
%W 10 Monday-based week number (two digits)
|
||||
%x 03/08/89 Date*
|
||||
%X 14:54:40 Time*
|
||||
%y 89 Last two digits of year
|
||||
%Y 1989 Year in full
|
||||
%Z EST Time zone abbreviation
|
||||
%+ Wed Mar 8 14:54:40 EST 1989 Default output format*
|
||||
.if t .in -.5i
|
||||
.if n .in -2
|
||||
* The exact output depends on the locale.
|
||||
.sp
|
||||
.fi
|
||||
If a character other than one of those shown above appears after
|
||||
a percent sign in the format,
|
||||
that following character is output.
|
||||
All other characters in the format are copied unchanged to the output;
|
||||
a newline character is always added at the end of the output.
|
||||
.PP
|
||||
In Sunday-based week numbering,
|
||||
the first Sunday of the year begins week 1;
|
||||
days preceding it are part of ``week 0.''
|
||||
In Monday-based week numbering,
|
||||
the first Monday of the year begins week 1.
|
||||
.PP
|
||||
To set the date, use a command line argument with one of the following forms:
|
||||
.nf
|
||||
.if t .in +.5i
|
||||
.if n .in +2
|
||||
.ta \w'198903081454\0'u
|
||||
1454 24-hour-clock hours (first two digits) and minutes
|
||||
081454 Month day (first two digits), hours, and minutes
|
||||
03081454 Month (two digits, January is 01), month day, hours, minutes
|
||||
8903081454 Year, month, month day, hours, minutes
|
||||
0308145489 Month, month day, hours, minutes, year
|
||||
(on System V-compatible systems)
|
||||
030814541989 Month, month day, hours, minutes, four-digit year
|
||||
198903081454 Four-digit year, month, month day, hours, minutes
|
||||
.if t .in -.5i
|
||||
.if n .in -2
|
||||
.fi
|
||||
If the century, year, month, or month day is not given,
|
||||
the current value is used.
|
||||
Any of the above forms may be followed by a period and two digits that give
|
||||
the seconds part of the new time; if no seconds are given, zero is assumed.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BR \-u " or " \-c
|
||||
Use UTC when setting and showing the date and time.
|
||||
.TP
|
||||
.B \-n
|
||||
Do not notify other networked systems of the time change.
|
||||
.TP
|
||||
.BI "\-d " dsttype
|
||||
Set the kernel-stored Daylight Saving Time type to the given value.
|
||||
(The kernel-stored DST type is used mostly by ``old'' binaries.)
|
||||
.TP
|
||||
.BI "\-t " minutes-west
|
||||
Set the kernel-stored ``minutes west of UTC'' value to the one given on the
|
||||
command line.
|
||||
(The kernel-stored DST type is used mostly by ``old'' binaries.)
|
||||
.TP
|
||||
.BI "\-a " adjustment
|
||||
Change the time forward (or backward) by the number of seconds
|
||||
(and fractions thereof) specified in the
|
||||
.I adjustment\^
|
||||
argument.
|
||||
Either the seconds part or the fractions part of the argument (but not both)
|
||||
may be omitted.
|
||||
On BSD-based systems,
|
||||
the adjustment is made by changing the rate at which time advances;
|
||||
on System-V-based systems, the adjustment is made by changing the time.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/lib/locale/\f2L\fP/LC_TIME description of time locale \f2L\fP
|
||||
.br
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.\" @(#)date.1 7.4
|
128
commands/zoneinfo/date.1.txt
Normal file
128
commands/zoneinfo/date.1.txt
Normal file
|
@ -0,0 +1,128 @@
|
|||
NAME
|
||||
|
||||
date - show and set date and time
|
||||
|
||||
SYNOPSIS
|
||||
date [ -u ] [ -c ] [ -n ] [ -d dsttype ] [ -t minutes-west ]
|
||||
[ -a [+|-]sss.fff ] [ +format ] [ [yyyy]mmddhhmm[yy][.ss] ]
|
||||
|
||||
DESCRIPTION
|
||||
Date without arguments writes the date and time to the
|
||||
standard output in the form
|
||||
Wed Mar 8 14:54:40 EST 1989
|
||||
with EST replaced by the local time zone's abbreviation (or
|
||||
by the abbreviation for the time zone specified in the TZ
|
||||
environment variable if set). The exact output format
|
||||
depends on the locale.
|
||||
|
||||
If a command-line argument starts with a plus sign (`+'),
|
||||
the rest of the argument is used as a format that controls
|
||||
what appears in the output. In the format, when a percent
|
||||
sign (`%') appears, it and the character after it are not
|
||||
output, but rather identify part of the date or time to be
|
||||
output in a particular way (or identify a special character
|
||||
to output):
|
||||
|
||||
Sample output Explanation
|
||||
%a Wed Abbreviated weekday name*
|
||||
%A Wednesday Full weekday name*
|
||||
%b Mar Abbreviated month name*
|
||||
%B March Full month name*
|
||||
%c Wed Mar 08 14:54:40 1989 Date and time*
|
||||
%C 19 Century
|
||||
%d 08 Day of month (always two digits)
|
||||
%D 03/08/89 Month/day/year (eight characters)
|
||||
%e 8 Day of month (leading zero blanked)
|
||||
%h Mar Abbreviated month name*
|
||||
%H 14 24-hour-clock hour (two digits)
|
||||
%I 02 12-hour-clock hour (two digits)
|
||||
%j 067 Julian day number (three digits)
|
||||
%k 2 12-hour-clock hour (leading zero blanked)
|
||||
%l 14 24-hour-clock hour (leading zero blanked)
|
||||
%m 03 Month number (two digits)
|
||||
%M 54 Minute (two digits)
|
||||
%n \n newline character
|
||||
%p PM AM/PM designation
|
||||
%r 02:54:40 PM Hour:minute:second AM/PM designation
|
||||
%R 14:54 Hour:minute
|
||||
%S 40 Second (two digits)
|
||||
%t \t tab character
|
||||
%T 14:54:40 Hour:minute:second
|
||||
%U 10 Sunday-based week number (two digits)
|
||||
%w 3 Day number (one digit, Sunday is 0)
|
||||
%W 10 Monday-based week number (two digits)
|
||||
%x 03/08/89 Date*
|
||||
%X 14:54:40 Time*
|
||||
%y 89 Last two digits of year
|
||||
%Y 1989 Year in full
|
||||
%Z EST Time zone abbreviation
|
||||
%+ Wed Mar 8 14:54:40 EST 1989 Default output format*
|
||||
* The exact output depends on the locale.
|
||||
|
||||
If a character other than one of those shown above appears
|
||||
after a percent sign in the format, that following character
|
||||
is output. All other characters in the format are copied
|
||||
unchanged to the output; a newline character is always added
|
||||
at the end of the output.
|
||||
|
||||
In Sunday-based week numbering, the first Sunday of the year
|
||||
begins week 1; days preceding it are part of ``week 0.'' In
|
||||
Monday-based week numbering, the first Monday of the year
|
||||
begins week 1.
|
||||
|
||||
To set the date, use a command line argument with one of the
|
||||
following forms:
|
||||
1454 24-hour-clock hours (first two digits) and minutes
|
||||
081454 Month day (first two digits), hours, and minutes
|
||||
03081454 Month (two digits, January is 01), month day, hours, minutes
|
||||
8903081454 Year, month, month day, hours, minutes
|
||||
0308145489 Month, month day, hours, minutes, year
|
||||
(on System V-compatible systems)
|
||||
030814541989 Month, month day, hours, minutes, four-digit year
|
||||
198903081454 Four-digit year, month, month day, hours, minutes
|
||||
If the century, year, month, or month day is not given, the
|
||||
current value is used. Any of the above forms may be
|
||||
followed by a period and two digits that give the seconds
|
||||
part of the new time; if no seconds are given, zero is
|
||||
assumed.
|
||||
|
||||
These options are available:
|
||||
|
||||
-u or -c
|
||||
Use UTC when setting and showing the date and time.
|
||||
|
||||
-n Do not notify other networked systems of the time
|
||||
change.
|
||||
|
||||
-d dsttype
|
||||
Set the kernel-stored Daylight Saving Time type to the
|
||||
given value. (The kernel-stored DST type is used
|
||||
mostly by ``old'' binaries.)
|
||||
|
||||
-t minutes-west
|
||||
Set the kernel-stored ``minutes west of UTC'' value to
|
||||
the one given on the command line. (The kernel-stored
|
||||
DST type is used mostly by ``old'' binaries.)
|
||||
|
||||
-a adjustment
|
||||
Change the time forward (or backward) by the number of
|
||||
seconds (and fractions thereof) specified in the
|
||||
adjustment argument. Either the seconds part or the
|
||||
fractions part of the argument (but not both) may be
|
||||
omitted. On BSD-based systems, the adjustment is made
|
||||
by changing the rate at which time advances; on
|
||||
System-V-based systems, the adjustment is made by
|
||||
changing the time.
|
||||
|
||||
FILES
|
||||
/usr/lib/locale/L/LC_TIME description of time
|
||||
locale L
|
||||
/usr/local/etc/zoneinfo time zone information
|
||||
directory
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style
|
||||
TZ's
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
|
||||
If /usr/local/etc/zoneinfo/GMT is absent, UTC leap seconds
|
||||
are loaded from /usr/local/etc/zoneinfo/posixrules.
|
974
commands/zoneinfo/date.c
Normal file
974
commands/zoneinfo/date.c
Normal file
|
@ -0,0 +1,974 @@
|
|||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char elsieid[] = "@(#)date.c 7.45";
|
||||
/*
|
||||
** Modified from the UCB version with the SCCS ID appearing below.
|
||||
*/
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1985, 1987, 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that the above copyright notice and this paragraph are
|
||||
* duplicated in all such forms and that any documentation,
|
||||
* advertising materials, and other materials related to such
|
||||
* distribution and use acknowledge that the software was developed
|
||||
* by the University of California, Berkeley. The name of the
|
||||
* University may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANT[A]BILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
char copyright[] =
|
||||
"@(#) Copyright (c) 1985, 1987, 1988 The Regents of the University of California.\n\
|
||||
All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "@(#)date.c 4.23 (Berkeley) 9/20/88";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "private.h"
|
||||
#if HAVE_ADJTIME || HAVE_SETTIMEOFDAY
|
||||
#include "sys/time.h" /* for struct timeval, struct timezone */
|
||||
#endif /* HAVE_ADJTIME || HAVE_SETTIMEOFDAY */
|
||||
#include "locale.h"
|
||||
#include "utmp.h" /* for OLD_TIME (or its absence) */
|
||||
#if HAVE_UTMPX_H
|
||||
#include "utmpx.h"
|
||||
#endif
|
||||
|
||||
#ifndef OTIME_MSG
|
||||
#define OTIME_MSG "old time"
|
||||
#endif
|
||||
#ifndef NTIME_MSG
|
||||
#define NTIME_MSG "new time"
|
||||
#endif
|
||||
|
||||
/*
|
||||
** The two things date knows about time are. . .
|
||||
*/
|
||||
|
||||
#ifndef TM_YEAR_BASE
|
||||
#define TM_YEAR_BASE 1900
|
||||
#endif /* !defined TM_YEAR_BASE */
|
||||
|
||||
#ifndef SECSPERMIN
|
||||
#define SECSPERMIN 60
|
||||
#endif /* !defined SECSPERMIN */
|
||||
|
||||
extern double atof();
|
||||
extern char ** environ;
|
||||
extern char * getlogin();
|
||||
extern time_t mktime();
|
||||
extern char * optarg;
|
||||
extern int optind;
|
||||
extern char * strchr();
|
||||
extern time_t time();
|
||||
extern char * tzname[2];
|
||||
|
||||
static int retval = EXIT_SUCCESS;
|
||||
|
||||
static void checkfinal P((const char *, int, time_t, time_t));
|
||||
static int comptm P((const struct tm *, const struct tm *));
|
||||
static time_t convert P((const char *, int, time_t));
|
||||
static void display P((const char *));
|
||||
static void dogmt P((void));
|
||||
static void errensure P((void));
|
||||
static void iffy P((time_t, time_t, const char *, const char *));
|
||||
int main P((int, char**));
|
||||
static const char * nondigit P((const char *));
|
||||
static void oops P((const char *));
|
||||
static void reset P((time_t, int));
|
||||
static void timeout P((FILE *, const char *, const struct tm *));
|
||||
static void usage P((void));
|
||||
static void wildinput P((const char *, const char *,
|
||||
const char *));
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
const int argc;
|
||||
char * argv[];
|
||||
{
|
||||
register const char * format;
|
||||
register const char * value;
|
||||
register const char * cp;
|
||||
register int ch;
|
||||
register int dousg;
|
||||
register int aflag = 0;
|
||||
register int dflag = 0;
|
||||
register int nflag = 0;
|
||||
register int tflag = 0;
|
||||
register int minuteswest;
|
||||
register int dsttime;
|
||||
register double adjust;
|
||||
time_t now;
|
||||
time_t t;
|
||||
|
||||
INITIALIZE(dousg);
|
||||
INITIALIZE(minuteswest);
|
||||
INITIALIZE(dsttime);
|
||||
INITIALIZE(adjust);
|
||||
INITIALIZE(t);
|
||||
#ifdef LC_ALL
|
||||
(void) setlocale(LC_ALL, "");
|
||||
#endif /* defined(LC_ALL) */
|
||||
#if HAVE_GETTEXT
|
||||
#ifdef TZ_DOMAINDIR
|
||||
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
|
||||
#endif /* defined(TEXTDOMAINDIR) */
|
||||
(void) textdomain(TZ_DOMAIN);
|
||||
#endif /* HAVE_GETTEXT */
|
||||
(void) time(&now);
|
||||
format = value = NULL;
|
||||
while ((ch = getopt(argc, argv, "ucnd:t:a:")) != EOF && ch != -1) {
|
||||
switch (ch) {
|
||||
default:
|
||||
usage();
|
||||
case 'u': /* do it in UTC */
|
||||
case 'c':
|
||||
dogmt();
|
||||
break;
|
||||
case 'n': /* don't set network */
|
||||
nflag = 1;
|
||||
break;
|
||||
case 'd': /* daylight saving time */
|
||||
if (dflag) {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: multiple -d's used"));
|
||||
usage();
|
||||
}
|
||||
dflag = 1;
|
||||
cp = optarg;
|
||||
dsttime = atoi(cp);
|
||||
if (*cp == '\0' || *nondigit(cp) != '\0')
|
||||
wildinput(_("-t value"), optarg,
|
||||
_("must be a non-negative number"));
|
||||
break;
|
||||
case 't': /* minutes west of UTC */
|
||||
if (tflag) {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: multiple -t's used"));
|
||||
usage();
|
||||
}
|
||||
tflag = 1;
|
||||
cp = optarg;
|
||||
minuteswest = atoi(cp);
|
||||
if (*cp == '+' || *cp == '-')
|
||||
++cp;
|
||||
if (*cp == '\0' || *nondigit(cp) != '\0')
|
||||
wildinput(_("-d value"), optarg,
|
||||
_("must be a number"));
|
||||
break;
|
||||
case 'a': /* adjustment */
|
||||
if (aflag) {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: multiple -a's used"));
|
||||
usage();
|
||||
}
|
||||
aflag = 1;
|
||||
cp = optarg;
|
||||
adjust = atof(cp);
|
||||
if (*cp == '+' || *cp == '-')
|
||||
++cp;
|
||||
if (*cp == '\0' || strcmp(cp, ".") == 0)
|
||||
wildinput(_("-a value"), optarg,
|
||||
_("must be a number"));
|
||||
cp = nondigit(cp);
|
||||
if (*cp == '.')
|
||||
++cp;
|
||||
if (*nondigit(cp) != '\0')
|
||||
wildinput(_("-a value"), optarg,
|
||||
_("must be a number"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (optind < argc) {
|
||||
cp = argv[optind++];
|
||||
if (*cp == '+')
|
||||
if (format == NULL)
|
||||
format = cp + 1;
|
||||
else {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: multiple formats in command line\n"));
|
||||
usage();
|
||||
}
|
||||
else if (value == NULL)
|
||||
value = cp;
|
||||
else {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: multiple values in command line\n"));
|
||||
usage();
|
||||
}
|
||||
}
|
||||
if (value != NULL) {
|
||||
/*
|
||||
** This order ensures that "reasonable" twelve-digit inputs
|
||||
** (such as 120203042006) won't be misinterpreted
|
||||
** even if time_t's range all the way back to the thirteenth
|
||||
** century. Do not change the order.
|
||||
*/
|
||||
t = convert(value, (dousg = TRUE), now);
|
||||
if (t == -1)
|
||||
t = convert(value, (dousg = FALSE), now);
|
||||
if (t == -1) {
|
||||
/*
|
||||
** Out of range values,
|
||||
** or time that falls in a DST transition hole?
|
||||
*/
|
||||
if ((cp = strchr(value, '.')) != NULL) {
|
||||
/*
|
||||
** Ensure that the failure of
|
||||
** TZ=America/New_York date 8712312359.60
|
||||
** doesn't get misdiagnosed. (It was
|
||||
** TZ=America/New_York date 8712311859.60
|
||||
** when the leap second was inserted.)
|
||||
** The normal check won't work since
|
||||
** the given time is valid in UTC.
|
||||
*/
|
||||
if (atoi(cp + 1) >= SECSPERMIN)
|
||||
wildinput(_("time"), value,
|
||||
_("out of range seconds given"));
|
||||
}
|
||||
dogmt();
|
||||
t = convert(value, FALSE, now);
|
||||
if (t == -1)
|
||||
t = convert(value, TRUE, now);
|
||||
wildinput(_("time"), value,
|
||||
(t == -1) ?
|
||||
_("out of range value given") :
|
||||
_("time skipped when clock springs forward"));
|
||||
}
|
||||
}
|
||||
/*
|
||||
** Entire command line has now been checked.
|
||||
*/
|
||||
if (aflag) {
|
||||
#if HAVE_ADJTIME
|
||||
struct timeval tv;
|
||||
|
||||
tv.tv_sec = (int) adjust;
|
||||
tv.tv_usec = (int) ((adjust - tv.tv_sec) * 1000000L);
|
||||
if (adjtime(&tv, (struct timeval *) NULL) != 0)
|
||||
oops("adjtime");
|
||||
#endif /* HAVE_ADJTIME */
|
||||
#if !HAVE_ADJTIME
|
||||
reset((time_t) (now + adjust), nflag);
|
||||
#endif /* !HAVE_ADJTIME */
|
||||
/*
|
||||
** Sun silently ignores everything else; we follow suit.
|
||||
*/
|
||||
exit(retval);
|
||||
}
|
||||
if (dflag || tflag) {
|
||||
#if HAVE_SETTIMEOFDAY == 2
|
||||
struct timezone tz;
|
||||
|
||||
if (!dflag || !tflag)
|
||||
if (gettimeofday((struct timeval *) NULL, &tz) != 0)
|
||||
oops("gettimeofday");
|
||||
if (dflag)
|
||||
tz.tz_dsttime = dsttime;
|
||||
if (tflag)
|
||||
tz.tz_minuteswest = minuteswest;
|
||||
if (settimeofday((struct timeval *) NULL, &tz) != 0)
|
||||
oops("settimeofday");
|
||||
#endif /* HAVE_SETTIMEOFDAY == 2 */
|
||||
#if HAVE_SETTIMEOFDAY != 2
|
||||
(void) fprintf(stderr,
|
||||
_("date: warning: kernel doesn't keep -d/-t information, option ignored\n"));
|
||||
#endif /* HAVE_SETTIMEOFDAY != 2 */
|
||||
}
|
||||
|
||||
if (value == NULL)
|
||||
display(format);
|
||||
|
||||
reset(t, nflag);
|
||||
|
||||
checkfinal(value, dousg, t, now);
|
||||
|
||||
#ifdef EBUG
|
||||
{
|
||||
struct tm tm;
|
||||
|
||||
tm = *localtime(&t);
|
||||
timeout(stdout, "%c\n", &tm);
|
||||
exit(retval);
|
||||
}
|
||||
#endif /* defined EBUG */
|
||||
|
||||
display(format);
|
||||
|
||||
/* gcc -Wall pacifier */
|
||||
for ( ; ; )
|
||||
continue;
|
||||
}
|
||||
|
||||
static void
|
||||
dogmt()
|
||||
{
|
||||
static char ** fakeenv;
|
||||
|
||||
if (fakeenv == NULL) {
|
||||
register int from;
|
||||
register int to;
|
||||
register int n;
|
||||
static char tzegmt0[] = "TZ=GMT0";
|
||||
|
||||
for (n = 0; environ[n] != NULL; ++n)
|
||||
continue;
|
||||
fakeenv = (char **) malloc((size_t) (n + 2) * sizeof *fakeenv);
|
||||
if (fakeenv == NULL) {
|
||||
(void) perror(_("Memory exhausted"));
|
||||
errensure();
|
||||
exit(retval);
|
||||
}
|
||||
to = 0;
|
||||
fakeenv[to++] = tzegmt0;
|
||||
for (from = 1; environ[from] != NULL; ++from)
|
||||
if (strncmp(environ[from], "TZ=", 3) != 0)
|
||||
fakeenv[to++] = environ[from];
|
||||
fakeenv[to] = NULL;
|
||||
environ = fakeenv;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef OLD_TIME
|
||||
|
||||
/*
|
||||
** We assume we're on a System-V-based system,
|
||||
** should use stime,
|
||||
** should write System-V-format utmp entries,
|
||||
** and don't have network notification to worry about.
|
||||
*/
|
||||
|
||||
#include "fcntl.h" /* for O_WRONLY, O_APPEND */
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void
|
||||
#if __STDC__
|
||||
reset(const time_t newt, const int nflag)
|
||||
#else /* !__STDC__ */
|
||||
reset(newt, nflag)
|
||||
const time_t newt;
|
||||
const int nflag;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
register int fid;
|
||||
time_t oldt;
|
||||
static struct {
|
||||
struct utmp before;
|
||||
struct utmp after;
|
||||
} s;
|
||||
#if HAVE_UTMPX_H
|
||||
static struct {
|
||||
struct utmpx before;
|
||||
struct utmpx after;
|
||||
} sx;
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Wouldn't it be great if stime returned the old time?
|
||||
*/
|
||||
(void) time(&oldt);
|
||||
if (stime(&newt) != 0)
|
||||
oops("stime");
|
||||
s.before.ut_type = OLD_TIME;
|
||||
s.before.ut_time = oldt;
|
||||
(void) strcpy(s.before.ut_line, OTIME_MSG);
|
||||
s.after.ut_type = NEW_TIME;
|
||||
s.after.ut_time = newt;
|
||||
(void) strcpy(s.after.ut_line, NTIME_MSG);
|
||||
fid = open(WTMP_FILE, O_WRONLY | O_APPEND);
|
||||
if (fid < 0)
|
||||
oops(_("log file open"));
|
||||
if (write(fid, (char *) &s, sizeof s) != sizeof s)
|
||||
oops(_("log file write"));
|
||||
if (close(fid) != 0)
|
||||
oops(_("log file close"));
|
||||
#if !HAVE_UTMPX_H
|
||||
pututline(&s.before);
|
||||
pututline(&s.after);
|
||||
#endif /* !HAVE_UTMPX_H */
|
||||
#if HAVE_UTMPX_H
|
||||
sx.before.ut_type = OLD_TIME;
|
||||
sx.before.ut_tv.tv_sec = oldt;
|
||||
(void) strcpy(sx.before.ut_line, OTIME_MSG);
|
||||
sx.after.ut_type = NEW_TIME;
|
||||
sx.after.ut_tv.tv_sec = newt;
|
||||
(void) strcpy(sx.after.ut_line, NTIME_MSG);
|
||||
#if !SUPPRESS_WTMPX_FILE_UPDATE
|
||||
/* In Solaris 2.5 (and presumably other systems),
|
||||
`date' does not update /var/adm/wtmpx.
|
||||
This must be a bug. If you'd like to reproduce the bug,
|
||||
define SUPPRESS_WTMPX_FILE_UPDATE to be nonzero. */
|
||||
fid = open(WTMPX_FILE, O_WRONLY | O_APPEND);
|
||||
if (fid < 0)
|
||||
oops(_("log file open"));
|
||||
if (write(fid, (char *) &sx, sizeof sx) != sizeof sx)
|
||||
oops(_("log file write"));
|
||||
if (close(fid) != 0)
|
||||
oops(_("log file close"));
|
||||
#endif /* !SUPPRESS_WTMPX_FILE_UPDATE */
|
||||
pututxline(&sx.before);
|
||||
pututxline(&sx.after);
|
||||
#endif /* HAVE_UTMPX_H */
|
||||
}
|
||||
|
||||
#endif /* defined OLD_TIME */
|
||||
#ifndef OLD_TIME
|
||||
|
||||
/*
|
||||
** We assume we're on a BSD-based system,
|
||||
** should use settimeofday,
|
||||
** should write BSD-format utmp entries (using logwtmp),
|
||||
** and may get to worry about network notification.
|
||||
** The "time name" changes between 4.3-tahoe and 4.4;
|
||||
** we include sys/param.h to determine which we should use.
|
||||
*/
|
||||
|
||||
#ifndef TIME_NAME
|
||||
#include "sys/param.h"
|
||||
#ifdef BSD4_4
|
||||
#define TIME_NAME "date"
|
||||
#endif /* defined BSD4_4 */
|
||||
#ifndef BSD4_4
|
||||
#define TIME_NAME ""
|
||||
#endif /* !defined BSD4_4 */
|
||||
#endif /* !defined TIME_NAME */
|
||||
|
||||
#include "syslog.h"
|
||||
#include "sys/socket.h"
|
||||
#include "netinet/in.h"
|
||||
#include "netdb.h"
|
||||
#define TSPTYPES
|
||||
#include "protocols/timed.h"
|
||||
|
||||
extern int logwtmp();
|
||||
|
||||
#if HAVE_SETTIMEOFDAY == 1
|
||||
#define settimeofday(t, tz) (settimeofday)(t)
|
||||
#endif /* HAVE_SETTIMEOFDAY == 1 */
|
||||
|
||||
#ifndef TSP_SETDATE
|
||||
/*ARGSUSED*/
|
||||
#endif /* !defined TSP_SETDATE */
|
||||
static void
|
||||
reset(newt, nflag)
|
||||
const time_t newt;
|
||||
const int nflag;
|
||||
{
|
||||
register const char * username;
|
||||
static struct timeval tv; /* static so tv_usec is 0 */
|
||||
|
||||
#ifdef EBUG
|
||||
return;
|
||||
#endif /* defined EBUG */
|
||||
username = getlogin();
|
||||
if (username == NULL || *username == '\0') /* single-user or no tty */
|
||||
username = "root";
|
||||
tv.tv_sec = newt;
|
||||
#ifdef TSP_SETDATE
|
||||
if (nflag || !netsettime(tv))
|
||||
#endif /* defined TSP_SETDATE */
|
||||
{
|
||||
/*
|
||||
** "old" entry is always written, for compatibility.
|
||||
*/
|
||||
logwtmp("|", TIME_NAME, "");
|
||||
if (settimeofday(&tv, (struct timezone *) NULL) == 0) {
|
||||
logwtmp("{", TIME_NAME, ""); /* } */
|
||||
syslog(LOG_AUTH | LOG_NOTICE, _("date set by %s"),
|
||||
username);
|
||||
} else oops("settimeofday");
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* !defined OLD_TIME */
|
||||
|
||||
static void
|
||||
wildinput(item, value, reason)
|
||||
const char * const item;
|
||||
const char * const value;
|
||||
const char * const reason;
|
||||
{
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: bad command line %s \"%s\", %s\n"),
|
||||
item, value, reason);
|
||||
usage();
|
||||
}
|
||||
|
||||
static void
|
||||
errensure P((void))
|
||||
{
|
||||
if (retval == EXIT_SUCCESS)
|
||||
retval = EXIT_FAILURE;
|
||||
}
|
||||
|
||||
static const char *
|
||||
nondigit(cp)
|
||||
register const char * cp;
|
||||
{
|
||||
while (is_digit(*cp))
|
||||
++cp;
|
||||
return cp;
|
||||
}
|
||||
|
||||
static void
|
||||
usage P((void))
|
||||
{
|
||||
(void) fprintf(stderr, _("date: usage is date [-u] [-c] [-n] [-d dst] \
|
||||
[-t min-west] [-a sss.fff] [[yyyy]mmddhhmm[yyyy][.ss]] [+format]\n"));
|
||||
errensure();
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
static void
|
||||
oops(string)
|
||||
const char * const string;
|
||||
{
|
||||
int e = errno;
|
||||
|
||||
(void) fprintf(stderr, _("date: error: "));
|
||||
errno = e;
|
||||
(void) perror(string);
|
||||
errensure();
|
||||
display((char *) NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
display(format)
|
||||
const char * const format;
|
||||
{
|
||||
struct tm tm;
|
||||
time_t now;
|
||||
|
||||
(void) time(&now);
|
||||
tm = *localtime(&now);
|
||||
timeout(stdout, format ? format : "%+", &tm);
|
||||
(void) putchar('\n');
|
||||
(void) fflush(stdout);
|
||||
(void) fflush(stderr);
|
||||
if (ferror(stdout) || ferror(stderr)) {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: couldn't write results\n"));
|
||||
errensure();
|
||||
}
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
extern size_t strftime();
|
||||
|
||||
#define INCR 1024
|
||||
|
||||
static void
|
||||
timeout(fp, format, tmp)
|
||||
FILE * const fp;
|
||||
const char * const format;
|
||||
const struct tm * const tmp;
|
||||
{
|
||||
char * cp;
|
||||
size_t result;
|
||||
size_t size;
|
||||
|
||||
if (*format == '\0')
|
||||
return;
|
||||
size = INCR;
|
||||
cp = malloc((size_t) size);
|
||||
for ( ; ; ) {
|
||||
if (cp == NULL) {
|
||||
(void) fprintf(stderr,
|
||||
_("date: error: can't get memory\n"));
|
||||
errensure();
|
||||
exit(retval);
|
||||
}
|
||||
cp[0] = '\1';
|
||||
result = strftime(cp, size, format, tmp);
|
||||
if (result != 0 || cp[0] == '\0')
|
||||
break;
|
||||
size += INCR;
|
||||
cp = realloc(cp, (size_t) size);
|
||||
}
|
||||
(void) fwrite(cp, 1, result, fp);
|
||||
free(cp);
|
||||
}
|
||||
|
||||
static int
|
||||
comptm(atmp, btmp)
|
||||
register const struct tm * const atmp;
|
||||
register const struct tm * const btmp;
|
||||
{
|
||||
register int result;
|
||||
|
||||
if ((result = (atmp->tm_year - btmp->tm_year)) == 0 &&
|
||||
(result = (atmp->tm_mon - btmp->tm_mon)) == 0 &&
|
||||
(result = (atmp->tm_mday - btmp->tm_mday)) == 0 &&
|
||||
(result = (atmp->tm_hour - btmp->tm_hour)) == 0 &&
|
||||
(result = (atmp->tm_min - btmp->tm_min)) == 0)
|
||||
result = atmp->tm_sec - btmp->tm_sec;
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
** convert --
|
||||
** convert user's input into a time_t.
|
||||
*/
|
||||
|
||||
#define ATOI2(ar) (ar[0] - '0') * 10 + (ar[1] - '0'); ar += 2;
|
||||
|
||||
static time_t
|
||||
#if __STDC__
|
||||
convert(register const char * const value, const int dousg, const time_t t)
|
||||
#else /* !__STDC__ */
|
||||
convert(value, dousg, t)
|
||||
register const char * const value;
|
||||
const int dousg;
|
||||
const time_t t;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
register const char * cp;
|
||||
register const char * dotp;
|
||||
register int cent, year_in_cent, month, hour, day, mins, secs;
|
||||
struct tm tm, outtm;
|
||||
time_t outt;
|
||||
|
||||
tm = *localtime(&t);
|
||||
#define DIVISOR 100
|
||||
year_in_cent = tm.tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
|
||||
cent = tm.tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
|
||||
year_in_cent / DIVISOR;
|
||||
year_in_cent %= DIVISOR;
|
||||
if (year_in_cent < 0) {
|
||||
year_in_cent += DIVISOR;
|
||||
--cent;
|
||||
}
|
||||
month = tm.tm_mon + 1;
|
||||
day = tm.tm_mday;
|
||||
hour = tm.tm_hour;
|
||||
mins = tm.tm_min;
|
||||
secs = 0;
|
||||
|
||||
dotp = strchr(value, '.');
|
||||
for (cp = value; *cp != '\0'; ++cp)
|
||||
if (!is_digit(*cp) && cp != dotp)
|
||||
wildinput(_("time"), value, _("contains a nondigit"));
|
||||
|
||||
if (dotp == NULL)
|
||||
dotp = strchr(value, '\0');
|
||||
else {
|
||||
cp = dotp + 1;
|
||||
if (strlen(cp) != 2)
|
||||
wildinput(_("time"), value,
|
||||
_("seconds part is not two digits"));
|
||||
secs = ATOI2(cp);
|
||||
}
|
||||
|
||||
cp = value;
|
||||
switch (dotp - cp) {
|
||||
default:
|
||||
wildinput(_("time"), value,
|
||||
_("main part is wrong length"));
|
||||
case 12:
|
||||
if (!dousg) {
|
||||
cent = ATOI2(cp);
|
||||
year_in_cent = ATOI2(cp);
|
||||
}
|
||||
month = ATOI2(cp);
|
||||
day = ATOI2(cp);
|
||||
hour = ATOI2(cp);
|
||||
mins = ATOI2(cp);
|
||||
if (dousg) {
|
||||
cent = ATOI2(cp);
|
||||
year_in_cent = ATOI2(cp);
|
||||
}
|
||||
break;
|
||||
case 8: /* mmddhhmm */
|
||||
month = ATOI2(cp);
|
||||
/* fall through to. . . */
|
||||
case 6: /* ddhhmm */
|
||||
day = ATOI2(cp);
|
||||
/* fall through to. . . */
|
||||
case 4: /* hhmm */
|
||||
hour = ATOI2(cp);
|
||||
mins = ATOI2(cp);
|
||||
break;
|
||||
case 10:
|
||||
if (!dousg) {
|
||||
year_in_cent = ATOI2(cp);
|
||||
}
|
||||
month = ATOI2(cp);
|
||||
day = ATOI2(cp);
|
||||
hour = ATOI2(cp);
|
||||
mins = ATOI2(cp);
|
||||
if (dousg) {
|
||||
year_in_cent = ATOI2(cp);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
tm.tm_year = cent * 100 + year_in_cent - TM_YEAR_BASE;
|
||||
tm.tm_mon = month - 1;
|
||||
tm.tm_mday = day;
|
||||
tm.tm_hour = hour;
|
||||
tm.tm_min = mins;
|
||||
tm.tm_sec = secs;
|
||||
tm.tm_isdst = -1;
|
||||
outtm = tm;
|
||||
outt = mktime(&outtm);
|
||||
return (comptm(&tm, &outtm) == 0) ? outt : -1;
|
||||
}
|
||||
|
||||
/*
|
||||
** Code from here on out is either based on code provided by UCB
|
||||
** or is only called just before the program exits.
|
||||
*/
|
||||
|
||||
/*
|
||||
** Check for iffy input.
|
||||
*/
|
||||
|
||||
static void
|
||||
#if __STDC__
|
||||
checkfinal(const char * const value,
|
||||
const int didusg,
|
||||
const time_t t,
|
||||
const time_t oldnow)
|
||||
#else /* !__STDC__ */
|
||||
checkfinal(value, didusg, t, oldnow)
|
||||
const char * const value;
|
||||
const int didusg;
|
||||
const time_t t;
|
||||
const time_t oldnow;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
time_t othert;
|
||||
struct tm tm;
|
||||
struct tm othertm;
|
||||
register int pass;
|
||||
register long offset;
|
||||
|
||||
/*
|
||||
** See if there's both a USG and a BSD interpretation.
|
||||
*/
|
||||
othert = convert(value, !didusg, oldnow);
|
||||
if (othert != -1 && othert != t)
|
||||
iffy(t, othert, value, _("year could be at start or end"));
|
||||
/*
|
||||
** See if there's both a DST and a STD version.
|
||||
*/
|
||||
tm = *localtime(&t);
|
||||
othertm = tm;
|
||||
othertm.tm_isdst = !tm.tm_isdst;
|
||||
othert = mktime(&othertm);
|
||||
if (othert != -1 && othertm.tm_isdst != tm.tm_isdst &&
|
||||
comptm(&tm, &othertm) == 0)
|
||||
iffy(t, othert, value,
|
||||
_("both standard and summer time versions exist"));
|
||||
/*
|
||||
** Final check.
|
||||
**
|
||||
** If a jurisdiction shifts time *without* shifting whether time is
|
||||
** summer or standard (as Hawaii, the United Kingdom, and Saudi Arabia
|
||||
** have done), routine checks for iffy times may not work.
|
||||
** So we perform this final check, deferring it until after the time has
|
||||
** been set--it may take a while, and we don't want to introduce an unnecessary
|
||||
** lag between the time the user enters their command and the time that
|
||||
** stime/settimeofday is called.
|
||||
**
|
||||
** We just check nearby times to see if any have the same representation
|
||||
** as the time that convert returned. We work our way out from the center
|
||||
** for quick response in solar time situations. We only handle common cases--
|
||||
** offsets of at most a minute, and offsets of exact numbers of minutes
|
||||
** and at most an hour.
|
||||
*/
|
||||
for (offset = 1; offset <= 60; ++offset)
|
||||
for (pass = 1; pass <= 4; ++pass) {
|
||||
if (pass == 1)
|
||||
othert = t + offset;
|
||||
else if (pass == 2)
|
||||
othert = t - offset;
|
||||
else if (pass == 3)
|
||||
othert = t + 60 * offset;
|
||||
else othert = t - 60 * offset;
|
||||
othertm = *localtime(&othert);
|
||||
if (comptm(&tm, &othertm) == 0)
|
||||
iffy(t, othert, value,
|
||||
_("multiple matching times exist"));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
#if __STDC__
|
||||
iffy(const time_t thist, const time_t thatt,
|
||||
const char * const value, const char * const reason)
|
||||
#else /* !__STDC__ */
|
||||
iffy(thist, thatt, value, reason)
|
||||
const time_t thist;
|
||||
const time_t thatt;
|
||||
const char * const value;
|
||||
const char * const reason;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
struct tm tm;
|
||||
|
||||
(void) fprintf(stderr, _("date: warning: ambiguous time \"%s\", %s.\n"),
|
||||
value, reason);
|
||||
tm = *gmtime(&thist);
|
||||
/*
|
||||
** Avoid running afoul of SCCS!
|
||||
*/
|
||||
timeout(stderr, _("Time was set as if you used\n\tdate -u %m%d%H\
|
||||
%M\
|
||||
%Y.%S\n"), &tm);
|
||||
tm = *localtime(&thist);
|
||||
timeout(stderr, _("to get %c"), &tm);
|
||||
(void) fprintf(stderr, _(" (%s). Use\n"),
|
||||
tm.tm_isdst ? _("summer time") : _("standard time"));
|
||||
tm = *gmtime(&thatt);
|
||||
timeout(stderr, _("\tdate -u %m%d%H\
|
||||
%M\
|
||||
%Y.%S\n"), &tm);
|
||||
tm = *localtime(&thatt);
|
||||
timeout(stderr, _("to get %c"), &tm);
|
||||
(void) fprintf(stderr, _(" (%s).\n"),
|
||||
tm.tm_isdst ? _("summer time") : _("standard time"));
|
||||
errensure();
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
#ifdef TSP_SETDATE
|
||||
#define WAITACK 2 /* seconds */
|
||||
#define WAITDATEACK 5 /* seconds */
|
||||
|
||||
/*
|
||||
* Set the date in the machines controlled by timedaemons
|
||||
* by communicating the new date to the local timedaemon.
|
||||
* If the timedaemon is in the master state, it performs the
|
||||
* correction on all slaves. If it is in the slave state, it
|
||||
* notifies the master that a correction is needed.
|
||||
* Returns 1 on success, 0 on failure.
|
||||
*/
|
||||
netsettime(ntv)
|
||||
struct timeval ntv;
|
||||
{
|
||||
int s, length, port, timed_ack, found, err;
|
||||
long waittime;
|
||||
fd_set ready;
|
||||
char hostname[MAXHOSTNAMELEN];
|
||||
struct timeval tout;
|
||||
struct servent *sp;
|
||||
struct tsp msg;
|
||||
struct sockaddr_in sin, dest, from;
|
||||
|
||||
sp = getservbyname("timed", "udp");
|
||||
if (sp == 0) {
|
||||
fputs(_("udp/timed: unknown service\n"), stderr);
|
||||
retval = 2;
|
||||
return (0);
|
||||
}
|
||||
dest.sin_port = sp->s_port;
|
||||
dest.sin_family = AF_INET;
|
||||
dest.sin_addr.s_addr = htonl((u_long)INADDR_ANY);
|
||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (s < 0) {
|
||||
if (errno != EPROTONOSUPPORT)
|
||||
perror("date: socket");
|
||||
goto bad;
|
||||
}
|
||||
bzero((char *)&sin, sizeof (sin));
|
||||
sin.sin_family = AF_INET;
|
||||
for (port = IPPORT_RESERVED - 1; port > IPPORT_RESERVED / 2; port--) {
|
||||
sin.sin_port = htons((u_short)port);
|
||||
if (bind(s, (struct sockaddr *)&sin, sizeof (sin)) >= 0)
|
||||
break;
|
||||
if (errno != EADDRINUSE) {
|
||||
if (errno != EADDRNOTAVAIL)
|
||||
perror("date: bind");
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
if (port == IPPORT_RESERVED / 2) {
|
||||
fputs(_("date: All ports in use\n"), stderr);
|
||||
goto bad;
|
||||
}
|
||||
msg.tsp_type = TSP_SETDATE;
|
||||
msg.tsp_vers = TSPVERSION;
|
||||
if (gethostname(hostname, sizeof (hostname))) {
|
||||
perror("gethostname");
|
||||
goto bad;
|
||||
}
|
||||
(void) strncpy(msg.tsp_name, hostname, sizeof (hostname));
|
||||
msg.tsp_seq = htons((u_short)0);
|
||||
msg.tsp_time.tv_sec = htonl((u_long)ntv.tv_sec);
|
||||
msg.tsp_time.tv_usec = htonl((u_long)ntv.tv_usec);
|
||||
length = sizeof (struct sockaddr_in);
|
||||
if (connect(s, &dest, length) < 0) {
|
||||
perror("date: connect");
|
||||
goto bad;
|
||||
}
|
||||
if (send(s, (char *)&msg, sizeof (struct tsp), 0) < 0) {
|
||||
if (errno != ECONNREFUSED)
|
||||
perror("date: send");
|
||||
goto bad;
|
||||
}
|
||||
timed_ack = -1;
|
||||
waittime = WAITACK;
|
||||
loop:
|
||||
tout.tv_sec = waittime;
|
||||
tout.tv_usec = 0;
|
||||
FD_ZERO(&ready);
|
||||
FD_SET(s, &ready);
|
||||
found = select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0, &tout);
|
||||
length = sizeof err;
|
||||
if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *)&err, &length) == 0
|
||||
&& err) {
|
||||
errno = err;
|
||||
if (errno != ECONNREFUSED)
|
||||
perror(_("date: send (delayed error)"));
|
||||
goto bad;
|
||||
}
|
||||
if (found > 0 && FD_ISSET(s, &ready)) {
|
||||
length = sizeof (struct sockaddr_in);
|
||||
if (recvfrom(s, (char *)&msg, sizeof (struct tsp), 0, &from,
|
||||
&length) < 0) {
|
||||
if (errno != ECONNREFUSED)
|
||||
perror("date: recvfrom");
|
||||
goto bad;
|
||||
}
|
||||
msg.tsp_seq = ntohs(msg.tsp_seq);
|
||||
msg.tsp_time.tv_sec = ntohl(msg.tsp_time.tv_sec);
|
||||
msg.tsp_time.tv_usec = ntohl(msg.tsp_time.tv_usec);
|
||||
switch (msg.tsp_type) {
|
||||
|
||||
case TSP_ACK:
|
||||
timed_ack = TSP_ACK;
|
||||
waittime = WAITDATEACK;
|
||||
goto loop;
|
||||
|
||||
case TSP_DATEACK:
|
||||
(void)close(s);
|
||||
return (1);
|
||||
|
||||
default:
|
||||
fprintf(stderr,
|
||||
_("date: Wrong ack received from timed: %s\n"),
|
||||
tsptype[msg.tsp_type]);
|
||||
timed_ack = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (timed_ack == -1)
|
||||
fputs(_("date: Can't reach time daemon, time set locally.\n"),
|
||||
stderr);
|
||||
bad:
|
||||
(void)close(s);
|
||||
retval = 2;
|
||||
return (0);
|
||||
}
|
||||
#endif /* defined TSP_SETDATE */
|
65
commands/zoneinfo/difftime.c
Normal file
65
commands/zoneinfo/difftime.c
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
** This file is in the public domain, so clarified as of
|
||||
** 1996-06-05 by Arthur David Olson.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char elsieid[] = "@(#)difftime.c 7.19";
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
/*LINTLIBRARY*/
|
||||
|
||||
#include "private.h" /* for time_t, TYPE_INTEGRAL, and TYPE_SIGNED */
|
||||
|
||||
double
|
||||
difftime(time1, time0)
|
||||
const time_t time1;
|
||||
const time_t time0;
|
||||
{
|
||||
/*
|
||||
** If (sizeof (double) > sizeof (time_t)) simply convert and subtract
|
||||
** (assuming that the larger type has more precision).
|
||||
** This is the common real-world case circa 2004.
|
||||
*/
|
||||
if (sizeof (double) > sizeof (time_t))
|
||||
return (double) time1 - (double) time0;
|
||||
if (!TYPE_INTEGRAL(time_t)) {
|
||||
/*
|
||||
** time_t is floating.
|
||||
*/
|
||||
return time1 - time0;
|
||||
}
|
||||
if (!TYPE_SIGNED(time_t)) {
|
||||
/*
|
||||
** time_t is integral and unsigned.
|
||||
** The difference of two unsigned values can't overflow
|
||||
** if the minuend is greater than or equal to the subtrahend.
|
||||
*/
|
||||
if (time1 >= time0)
|
||||
return time1 - time0;
|
||||
else return -((double) (time0 - time1));
|
||||
}
|
||||
/*
|
||||
** time_t is integral and signed.
|
||||
** Handle cases where both time1 and time0 have the same sign
|
||||
** (meaning that their difference cannot overflow).
|
||||
*/
|
||||
if ((time1 < 0) == (time0 < 0))
|
||||
return time1 - time0;
|
||||
/*
|
||||
** time1 and time0 have opposite signs.
|
||||
** Punt if unsigned long is too narrow.
|
||||
*/
|
||||
if (sizeof (unsigned long) < sizeof (time_t))
|
||||
return (double) time1 - (double) time0;
|
||||
/*
|
||||
** Stay calm...decent optimizers will eliminate the complexity below.
|
||||
*/
|
||||
if (time1 >= 0 /* && time0 < 0 */)
|
||||
return (unsigned long) time1 +
|
||||
(unsigned long) (-(time0 + 1)) + 1;
|
||||
return -(double) ((unsigned long) time0 +
|
||||
(unsigned long) (-(time1 + 1)) + 1);
|
||||
}
|
80
commands/zoneinfo/etcetera
Normal file
80
commands/zoneinfo/etcetera
Normal file
|
@ -0,0 +1,80 @@
|
|||
# @(#)etcetera 8.1
|
||||
|
||||
# These entries are mostly present for historical reasons, so that
|
||||
# people in areas not otherwise covered by the tz files could "zic -l"
|
||||
# to a time zone that was right for their area. These days, the
|
||||
# tz files cover almost all the inhabited world, and the only practical
|
||||
# need now for the entries that are not on UTC are for ships at sea
|
||||
# that cannot use POSIX TZ settings.
|
||||
|
||||
Zone Etc/GMT 0 - GMT
|
||||
Zone Etc/UTC 0 - UTC
|
||||
Zone Etc/UCT 0 - UCT
|
||||
|
||||
# The following link uses older naming conventions,
|
||||
# but it belongs here, not in the file `backward',
|
||||
# as functions like gmtime load the "GMT" file to handle leap seconds properly.
|
||||
# We want this to work even on installations that omit the other older names.
|
||||
Link Etc/GMT GMT
|
||||
|
||||
Link Etc/UTC Etc/Universal
|
||||
Link Etc/UTC Etc/Zulu
|
||||
|
||||
Link Etc/GMT Etc/Greenwich
|
||||
Link Etc/GMT Etc/GMT-0
|
||||
Link Etc/GMT Etc/GMT+0
|
||||
Link Etc/GMT Etc/GMT0
|
||||
|
||||
# We use POSIX-style signs in the Zone names and the output abbreviations,
|
||||
# even though this is the opposite of what many people expect.
|
||||
# POSIX has positive signs west of Greenwich, but many people expect
|
||||
# positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses
|
||||
# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
|
||||
# (i.e. west of Greenwich) even though many people would expect it to
|
||||
# mean 4 hours ahead of UTC (i.e. east of Greenwich).
|
||||
#
|
||||
# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation
|
||||
# (which is not yet supported by the tz code) allows for
|
||||
# TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to
|
||||
# ISO 8601 you can use TZ='<-0400>+4'. Thus the commonly-expected
|
||||
# offset is kept within the angle bracket (and is used for display)
|
||||
# while the POSIX sign is kept outside the angle bracket (and is used
|
||||
# for calculation).
|
||||
#
|
||||
# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
|
||||
# GMT but uses the completely misleading abbreviation "GMT".
|
||||
|
||||
# Earlier incarnations of this package were not POSIX-compliant,
|
||||
# and had lines such as
|
||||
# Zone GMT-12 -12 - GMT-1200
|
||||
# We did not want things to change quietly if someone accustomed to the old
|
||||
# way does a
|
||||
# zic -l GMT-12
|
||||
# so we moved the names into the Etc subdirectory.
|
||||
|
||||
Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
|
||||
Zone Etc/GMT-13 13 - GMT-13
|
||||
Zone Etc/GMT-12 12 - GMT-12
|
||||
Zone Etc/GMT-11 11 - GMT-11
|
||||
Zone Etc/GMT-10 10 - GMT-10
|
||||
Zone Etc/GMT-9 9 - GMT-9
|
||||
Zone Etc/GMT-8 8 - GMT-8
|
||||
Zone Etc/GMT-7 7 - GMT-7
|
||||
Zone Etc/GMT-6 6 - GMT-6
|
||||
Zone Etc/GMT-5 5 - GMT-5
|
||||
Zone Etc/GMT-4 4 - GMT-4
|
||||
Zone Etc/GMT-3 3 - GMT-3
|
||||
Zone Etc/GMT-2 2 - GMT-2
|
||||
Zone Etc/GMT-1 1 - GMT-1
|
||||
Zone Etc/GMT+1 -1 - GMT+1
|
||||
Zone Etc/GMT+2 -2 - GMT+2
|
||||
Zone Etc/GMT+3 -3 - GMT+3
|
||||
Zone Etc/GMT+4 -4 - GMT+4
|
||||
Zone Etc/GMT+5 -5 - GMT+5
|
||||
Zone Etc/GMT+6 -6 - GMT+6
|
||||
Zone Etc/GMT+7 -7 - GMT+7
|
||||
Zone Etc/GMT+8 -8 - GMT+8
|
||||
Zone Etc/GMT+9 -9 - GMT+9
|
||||
Zone Etc/GMT+10 -10 - GMT+10
|
||||
Zone Etc/GMT+11 -11 - GMT+11
|
||||
Zone Etc/GMT+12 -12 - GMT+12
|
2519
commands/zoneinfo/europe
Normal file
2519
commands/zoneinfo/europe
Normal file
File diff suppressed because it is too large
Load diff
8
commands/zoneinfo/factory
Normal file
8
commands/zoneinfo/factory
Normal file
|
@ -0,0 +1,8 @@
|
|||
# @(#)factory 8.1
|
||||
|
||||
# For companies who don't want to put time zone specification in
|
||||
# their installation procedures. When users run date, they'll get the message.
|
||||
# Also useful for the "comp.sources" version.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT
|
||||
Zone Factory 0 - "Local time zone must be set--see zic manual page"
|
99
commands/zoneinfo/ialloc.c
Normal file
99
commands/zoneinfo/ialloc.c
Normal file
|
@ -0,0 +1,99 @@
|
|||
#
|
||||
|
||||
/*LINTLIBRARY*/
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char sccsid[] = "@(#)ialloc.c 7.14";
|
||||
#endif /* !NOID */
|
||||
#endif /* !lint */
|
||||
|
||||
#ifndef alloc_t
|
||||
#define alloc_t unsigned
|
||||
#endif /* !alloc_t */
|
||||
|
||||
#ifdef MAL
|
||||
#define NULLMAL(x) ((x) == NULL || (x) == MAL)
|
||||
#else /* !MAL */
|
||||
#define NULLMAL(x) ((x) == NULL)
|
||||
#endif /* !MAL */
|
||||
|
||||
extern char * calloc();
|
||||
extern char * malloc();
|
||||
extern char * realloc();
|
||||
extern char * strcpy();
|
||||
|
||||
char *
|
||||
imalloc(n)
|
||||
{
|
||||
#ifdef MAL
|
||||
register char * result;
|
||||
|
||||
if (n == 0)
|
||||
n = 1;
|
||||
result = malloc((alloc_t) n);
|
||||
return (result == MAL) ? NULL : result;
|
||||
#else /* !MAL */
|
||||
if (n == 0)
|
||||
n = 1;
|
||||
return malloc((alloc_t) n);
|
||||
#endif /* !MAL */
|
||||
}
|
||||
|
||||
char *
|
||||
icalloc(nelem, elsize)
|
||||
{
|
||||
if (nelem == 0 || elsize == 0)
|
||||
nelem = elsize = 1;
|
||||
return calloc((alloc_t) nelem, (alloc_t) elsize);
|
||||
}
|
||||
|
||||
char *
|
||||
irealloc(pointer, size)
|
||||
char * pointer;
|
||||
{
|
||||
if (NULLMAL(pointer))
|
||||
return imalloc(size);
|
||||
if (size == 0)
|
||||
size = 1;
|
||||
return realloc(pointer, (alloc_t) size);
|
||||
}
|
||||
|
||||
char *
|
||||
icatalloc(old, new)
|
||||
char * old;
|
||||
char * new;
|
||||
{
|
||||
register char * result;
|
||||
register oldsize, newsize;
|
||||
|
||||
oldsize = NULLMAL(old) ? 0 : strlen(old);
|
||||
newsize = NULLMAL(new) ? 0 : strlen(new);
|
||||
if ((result = irealloc(old, oldsize + newsize + 1)) != NULL)
|
||||
if (!NULLMAL(new))
|
||||
(void) strcpy(result + oldsize, new);
|
||||
return result;
|
||||
}
|
||||
|
||||
char *
|
||||
icpyalloc(string)
|
||||
char * string;
|
||||
{
|
||||
return icatalloc((char *) NULL, string);
|
||||
}
|
||||
|
||||
ifree(p)
|
||||
char * p;
|
||||
{
|
||||
if (!NULLMAL(p))
|
||||
free(p);
|
||||
}
|
||||
|
||||
icfree(p)
|
||||
char * p;
|
||||
{
|
||||
if (!NULLMAL(p))
|
||||
free(p);
|
||||
}
|
267
commands/zoneinfo/iso3166.tab
Normal file
267
commands/zoneinfo/iso3166.tab
Normal file
|
@ -0,0 +1,267 @@
|
|||
# ISO 3166 alpha-2 country codes
|
||||
#
|
||||
# @(#)iso3166.tab 8.4
|
||||
#
|
||||
# From Paul Eggert (2006-09-27):
|
||||
#
|
||||
# This file contains a table with the following columns:
|
||||
# 1. ISO 3166-1 alpha-2 country code, current as of
|
||||
# ISO 3166-1 Newsletter No. V-12 (2006-09-26). See:
|
||||
# <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
|
||||
# ISO 3166 Maintenance agency (ISO 3166/MA)
|
||||
# </a>.
|
||||
# 2. The usual English name for the country,
|
||||
# chosen so that alphabetic sorting of subsets produces helpful lists.
|
||||
# This is not the same as the English name in the ISO 3166 tables.
|
||||
#
|
||||
# Columns are separated by a single tab.
|
||||
# The table is sorted by country code.
|
||||
#
|
||||
# Lines beginning with `#' are comments.
|
||||
#
|
||||
#country-
|
||||
#code country name
|
||||
AD Andorra
|
||||
AE United Arab Emirates
|
||||
AF Afghanistan
|
||||
AG Antigua & Barbuda
|
||||
AI Anguilla
|
||||
AL Albania
|
||||
AM Armenia
|
||||
AN Netherlands Antilles
|
||||
AO Angola
|
||||
AQ Antarctica
|
||||
AR Argentina
|
||||
AS Samoa (American)
|
||||
AT Austria
|
||||
AU Australia
|
||||
AW Aruba
|
||||
AX Aaland Islands
|
||||
AZ Azerbaijan
|
||||
BA Bosnia & Herzegovina
|
||||
BB Barbados
|
||||
BD Bangladesh
|
||||
BE Belgium
|
||||
BF Burkina Faso
|
||||
BG Bulgaria
|
||||
BH Bahrain
|
||||
BI Burundi
|
||||
BJ Benin
|
||||
BM Bermuda
|
||||
BN Brunei
|
||||
BO Bolivia
|
||||
BR Brazil
|
||||
BS Bahamas
|
||||
BT Bhutan
|
||||
BV Bouvet Island
|
||||
BW Botswana
|
||||
BY Belarus
|
||||
BZ Belize
|
||||
CA Canada
|
||||
CC Cocos (Keeling) Islands
|
||||
CD Congo (Dem. Rep.)
|
||||
CF Central African Rep.
|
||||
CG Congo (Rep.)
|
||||
CH Switzerland
|
||||
CI Cote d'Ivoire
|
||||
CK Cook Islands
|
||||
CL Chile
|
||||
CM Cameroon
|
||||
CN China
|
||||
CO Colombia
|
||||
CR Costa Rica
|
||||
CU Cuba
|
||||
CV Cape Verde
|
||||
CX Christmas Island
|
||||
CY Cyprus
|
||||
CZ Czech Republic
|
||||
DE Germany
|
||||
DJ Djibouti
|
||||
DK Denmark
|
||||
DM Dominica
|
||||
DO Dominican Republic
|
||||
DZ Algeria
|
||||
EC Ecuador
|
||||
EE Estonia
|
||||
EG Egypt
|
||||
EH Western Sahara
|
||||
ER Eritrea
|
||||
ES Spain
|
||||
ET Ethiopia
|
||||
FI Finland
|
||||
FJ Fiji
|
||||
FK Falkland Islands
|
||||
FM Micronesia
|
||||
FO Faroe Islands
|
||||
FR France
|
||||
GA Gabon
|
||||
GB Britain (UK)
|
||||
GD Grenada
|
||||
GE Georgia
|
||||
GF French Guiana
|
||||
GG Guernsey
|
||||
GH Ghana
|
||||
GI Gibraltar
|
||||
GL Greenland
|
||||
GM Gambia
|
||||
GN Guinea
|
||||
GP Guadeloupe
|
||||
GQ Equatorial Guinea
|
||||
GR Greece
|
||||
GS South Georgia & the South Sandwich Islands
|
||||
GT Guatemala
|
||||
GU Guam
|
||||
GW Guinea-Bissau
|
||||
GY Guyana
|
||||
HK Hong Kong
|
||||
HM Heard Island & McDonald Islands
|
||||
HN Honduras
|
||||
HR Croatia
|
||||
HT Haiti
|
||||
HU Hungary
|
||||
ID Indonesia
|
||||
IE Ireland
|
||||
IL Israel
|
||||
IM Isle of Man
|
||||
IN India
|
||||
IO British Indian Ocean Territory
|
||||
IQ Iraq
|
||||
IR Iran
|
||||
IS Iceland
|
||||
IT Italy
|
||||
JE Jersey
|
||||
JM Jamaica
|
||||
JO Jordan
|
||||
JP Japan
|
||||
KE Kenya
|
||||
KG Kyrgyzstan
|
||||
KH Cambodia
|
||||
KI Kiribati
|
||||
KM Comoros
|
||||
KN St Kitts & Nevis
|
||||
KP Korea (North)
|
||||
KR Korea (South)
|
||||
KW Kuwait
|
||||
KY Cayman Islands
|
||||
KZ Kazakhstan
|
||||
LA Laos
|
||||
LB Lebanon
|
||||
LC St Lucia
|
||||
LI Liechtenstein
|
||||
LK Sri Lanka
|
||||
LR Liberia
|
||||
LS Lesotho
|
||||
LT Lithuania
|
||||
LU Luxembourg
|
||||
LV Latvia
|
||||
LY Libya
|
||||
MA Morocco
|
||||
MC Monaco
|
||||
MD Moldova
|
||||
ME Montenegro
|
||||
MG Madagascar
|
||||
MH Marshall Islands
|
||||
MK Macedonia
|
||||
ML Mali
|
||||
MM Myanmar (Burma)
|
||||
MN Mongolia
|
||||
MO Macau
|
||||
MP Northern Mariana Islands
|
||||
MQ Martinique
|
||||
MR Mauritania
|
||||
MS Montserrat
|
||||
MT Malta
|
||||
MU Mauritius
|
||||
MV Maldives
|
||||
MW Malawi
|
||||
MX Mexico
|
||||
MY Malaysia
|
||||
MZ Mozambique
|
||||
NA Namibia
|
||||
NC New Caledonia
|
||||
NE Niger
|
||||
NF Norfolk Island
|
||||
NG Nigeria
|
||||
NI Nicaragua
|
||||
NL Netherlands
|
||||
NO Norway
|
||||
NP Nepal
|
||||
NR Nauru
|
||||
NU Niue
|
||||
NZ New Zealand
|
||||
OM Oman
|
||||
PA Panama
|
||||
PE Peru
|
||||
PF French Polynesia
|
||||
PG Papua New Guinea
|
||||
PH Philippines
|
||||
PK Pakistan
|
||||
PL Poland
|
||||
PM St Pierre & Miquelon
|
||||
PN Pitcairn
|
||||
PR Puerto Rico
|
||||
PS Palestine
|
||||
PT Portugal
|
||||
PW Palau
|
||||
PY Paraguay
|
||||
QA Qatar
|
||||
RE Reunion
|
||||
RO Romania
|
||||
RS Serbia
|
||||
RU Russia
|
||||
RW Rwanda
|
||||
SA Saudi Arabia
|
||||
SB Solomon Islands
|
||||
SC Seychelles
|
||||
SD Sudan
|
||||
SE Sweden
|
||||
SG Singapore
|
||||
SH St Helena
|
||||
SI Slovenia
|
||||
SJ Svalbard & Jan Mayen
|
||||
SK Slovakia
|
||||
SL Sierra Leone
|
||||
SM San Marino
|
||||
SN Senegal
|
||||
SO Somalia
|
||||
SR Suriname
|
||||
ST Sao Tome & Principe
|
||||
SV El Salvador
|
||||
SY Syria
|
||||
SZ Swaziland
|
||||
TC Turks & Caicos Is
|
||||
TD Chad
|
||||
TF French Southern & Antarctic Lands
|
||||
TG Togo
|
||||
TH Thailand
|
||||
TJ Tajikistan
|
||||
TK Tokelau
|
||||
TL East Timor
|
||||
TM Turkmenistan
|
||||
TN Tunisia
|
||||
TO Tonga
|
||||
TR Turkey
|
||||
TT Trinidad & Tobago
|
||||
TV Tuvalu
|
||||
TW Taiwan
|
||||
TZ Tanzania
|
||||
UA Ukraine
|
||||
UG Uganda
|
||||
UM US minor outlying islands
|
||||
US United States
|
||||
UY Uruguay
|
||||
UZ Uzbekistan
|
||||
VA Vatican City
|
||||
VC St Vincent
|
||||
VE Venezuela
|
||||
VG Virgin Islands (UK)
|
||||
VI Virgin Islands (US)
|
||||
VN Vietnam
|
||||
VU Vanuatu
|
||||
WF Wallis & Futuna
|
||||
WS Samoa (western)
|
||||
YE Yemen
|
||||
YT Mayotte
|
||||
ZA South Africa
|
||||
ZM Zambia
|
||||
ZW Zimbabwe
|
BIN
commands/zoneinfo/itca.jpg
Normal file
BIN
commands/zoneinfo/itca.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
82
commands/zoneinfo/leapseconds
Normal file
82
commands/zoneinfo/leapseconds
Normal file
|
@ -0,0 +1,82 @@
|
|||
# @(#)leapseconds 8.3
|
||||
|
||||
# Allowance for leapseconds added to each timezone file.
|
||||
|
||||
# The International Earth Rotation Service periodically uses leap seconds
|
||||
# to keep UTC to within 0.9 s of UT1
|
||||
# (which measures the true angular orientation of the earth in space); see
|
||||
# Terry J Quinn, The BIPM and the accurate measure of time,
|
||||
# Proc IEEE 79, 7 (July 1991), 894-905.
|
||||
# There were no leap seconds before 1972, because the official mechanism
|
||||
# accounting for the discrepancy between atomic time and the earth's rotation
|
||||
# did not exist until the early 1970s.
|
||||
|
||||
# The correction (+ or -) is made at the given time, so lines
|
||||
# will typically look like:
|
||||
# Leap YEAR MON DAY 23:59:60 + R/S
|
||||
# or
|
||||
# Leap YEAR MON DAY 23:59:59 - R/S
|
||||
|
||||
# If the leapsecond is Rolling (R) the given time is local time
|
||||
# If the leapsecond is Stationary (S) the given time is UTC
|
||||
|
||||
# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
||||
Leap 1972 Jun 30 23:59:60 + S
|
||||
Leap 1972 Dec 31 23:59:60 + S
|
||||
Leap 1973 Dec 31 23:59:60 + S
|
||||
Leap 1974 Dec 31 23:59:60 + S
|
||||
Leap 1975 Dec 31 23:59:60 + S
|
||||
Leap 1976 Dec 31 23:59:60 + S
|
||||
Leap 1977 Dec 31 23:59:60 + S
|
||||
Leap 1978 Dec 31 23:59:60 + S
|
||||
Leap 1979 Dec 31 23:59:60 + S
|
||||
Leap 1981 Jun 30 23:59:60 + S
|
||||
Leap 1982 Jun 30 23:59:60 + S
|
||||
Leap 1983 Jun 30 23:59:60 + S
|
||||
Leap 1985 Jun 30 23:59:60 + S
|
||||
Leap 1987 Dec 31 23:59:60 + S
|
||||
Leap 1989 Dec 31 23:59:60 + S
|
||||
Leap 1990 Dec 31 23:59:60 + S
|
||||
Leap 1992 Jun 30 23:59:60 + S
|
||||
Leap 1993 Jun 30 23:59:60 + S
|
||||
Leap 1994 Jun 30 23:59:60 + S
|
||||
Leap 1995 Dec 31 23:59:60 + S
|
||||
Leap 1997 Jun 30 23:59:60 + S
|
||||
Leap 1998 Dec 31 23:59:60 + S
|
||||
Leap 2005 Dec 31 23:59:60 + S
|
||||
|
||||
# ...
|
||||
# Sent: Thursday, February 01, 2007 9:49 AM
|
||||
# ...
|
||||
# Subject: Bulletin C number 33
|
||||
#
|
||||
# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
|
||||
#
|
||||
# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
|
||||
#
|
||||
# SERVICE DE LA ROTATION TERRESTRE
|
||||
# OBSERVATOIRE DE PARIS
|
||||
# 61, Av. de l'Observatoire 75014 PARIS (France)
|
||||
# ...
|
||||
#
|
||||
# Paris, 1 February 2007
|
||||
# Bulletin C 33
|
||||
# To authorities responsible
|
||||
# for the measurement and
|
||||
# distribution of time
|
||||
#
|
||||
# INFORMATION ON UTC - TAI
|
||||
#
|
||||
# NO positive leap second will be introduced at the end of June 2007.
|
||||
# The difference between Coordinated Universal Time UTC and the
|
||||
# International Atomic Time TAI is:
|
||||
# from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
|
||||
# Leap seconds can be introduced in UTC at the end of the months of
|
||||
# December or June, depending on the evolution of UT1-TAI. Bulletin C is
|
||||
# mailed every six months, either to announce a time step in UTC, or to
|
||||
# confirm that there will be no time step at the next possible date.
|
||||
#
|
||||
# Daniel GAMBIS
|
||||
# Director
|
||||
# Earth Orientation Center of IERS
|
||||
# Observatoire de Paris, France
|
1914
commands/zoneinfo/localtime.c
Normal file
1914
commands/zoneinfo/localtime.c
Normal file
File diff suppressed because it is too large
Load diff
71
commands/zoneinfo/logwtmp.c
Normal file
71
commands/zoneinfo/logwtmp.c
Normal file
|
@ -0,0 +1,71 @@
|
|||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char elsieid[] = "@(#)logwtmp.c 7.7";
|
||||
/* As received from UCB, with include reordering and OLD_TIME condition. */
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that the above copyright notice and this paragraph are
|
||||
* duplicated in all such forms and that any documentation,
|
||||
* advertising materials, and other materials related to such
|
||||
* distribution and use acknowledge that the software was developed
|
||||
* by the University of California, Berkeley. The name of the
|
||||
* University may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANT[A]BILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#ifdef LIBC_SCCS
|
||||
static char sccsid[] = "@(#)logwtmp.c 5.2 (Berkeley) 9/20/88";
|
||||
#endif /* defined LIBC_SCCS */
|
||||
#endif /* !defined lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <utmp.h>
|
||||
|
||||
#ifdef OLD_TIME
|
||||
|
||||
char dummy_to_keep_linker_happy;
|
||||
|
||||
#endif /* defined OLD_TIME */
|
||||
|
||||
#ifndef OLD_TIME
|
||||
|
||||
#include <sys/file.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define WTMPFILE "/usr/adm/wtmp"
|
||||
|
||||
logwtmp(line, name, host)
|
||||
char *line, *name, *host;
|
||||
{
|
||||
struct utmp ut;
|
||||
struct stat buf;
|
||||
int fd;
|
||||
time_t time();
|
||||
char *strncpy();
|
||||
|
||||
if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
|
||||
return;
|
||||
if (!fstat(fd, &buf)) {
|
||||
(void)strncpy(ut.ut_line, line, sizeof(ut.ut_line));
|
||||
(void)strncpy(ut.ut_name, name, sizeof(ut.ut_name));
|
||||
(void)strncpy(ut.ut_host, host, sizeof(ut.ut_host));
|
||||
(void)time(&ut.ut_time);
|
||||
if (write(fd, (char *)&ut, sizeof(struct utmp)) !=
|
||||
sizeof(struct utmp))
|
||||
(void)ftruncate(fd, buf.st_size);
|
||||
}
|
||||
(void)close(fd);
|
||||
}
|
||||
|
||||
#endif /* !defined OLD_TIME */
|
237
commands/zoneinfo/newctime.3
Normal file
237
commands/zoneinfo/newctime.3
Normal file
|
@ -0,0 +1,237 @@
|
|||
.TH NEWCTIME 3
|
||||
.SH NAME
|
||||
asctime, ctime, difftime, gmtime, localtime, mktime \- convert date and time to ASCII
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B extern char *tzname[2];
|
||||
.PP
|
||||
.B void tzset()
|
||||
.PP
|
||||
.B #include <sys/types.h>
|
||||
.PP
|
||||
.B char *ctime(clock)
|
||||
.B const time_t *clock;
|
||||
.PP
|
||||
.B double difftime(time1, time0)
|
||||
.B time_t time1;
|
||||
.B time_t time0;
|
||||
.PP
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B char *asctime(tm)
|
||||
.B const struct tm *tm;
|
||||
.PP
|
||||
.B struct tm *localtime(clock)
|
||||
.B const time_t *clock;
|
||||
.PP
|
||||
.B struct tm *gmtime(clock)
|
||||
.B const time_t *clock;
|
||||
.PP
|
||||
.B time_t mktime(tm)
|
||||
.B struct tm *tm;
|
||||
.PP
|
||||
.B cc ... -ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.I Ctime\^
|
||||
converts a long integer, pointed to by
|
||||
.IR clock ,
|
||||
representing the time in seconds since
|
||||
00:00:00 UTC, 1970-01-01,
|
||||
and returns a pointer to a
|
||||
string of the form
|
||||
.br
|
||||
.ce
|
||||
.eo
|
||||
Thu Nov 24 18:22:48 1986\n\0
|
||||
.br
|
||||
.ec
|
||||
Years requiring fewer than four characters are padded with leading zeroes.
|
||||
For years longer than four characters, the string is of the form
|
||||
.br
|
||||
.ce
|
||||
.eo
|
||||
Thu Nov 24 18:22:48 81986\n\0
|
||||
.ec
|
||||
.br
|
||||
with five spaces before the year.
|
||||
These unusual formats are designed to make it less likely that older
|
||||
software that expects exactly 26 bytes of output will mistakenly output
|
||||
misleading values for out-of-range years.
|
||||
.PP
|
||||
.I Localtime\^
|
||||
and
|
||||
.I gmtime\^
|
||||
return pointers to ``tm'' structures, described below.
|
||||
.I Localtime\^
|
||||
corrects for the time zone and any time zone adjustments
|
||||
(such as Daylight Saving Time in the United States).
|
||||
After filling in the ``tm'' structure,
|
||||
.I localtime
|
||||
sets the
|
||||
.BR tm_isdst 'th
|
||||
element of
|
||||
.B tzname
|
||||
to a pointer to an
|
||||
ASCII string that's the time zone abbreviation to be used with
|
||||
.IR localtime 's
|
||||
return value.
|
||||
.PP
|
||||
.I Gmtime\^
|
||||
converts to Coordinated Universal Time.
|
||||
.PP
|
||||
.I Asctime\^
|
||||
converts a time value contained in a
|
||||
``tm'' structure to a string,
|
||||
as shown in the above example,
|
||||
and returns a pointer to the string.
|
||||
.PP
|
||||
.I Mktime\^
|
||||
converts the broken-down time,
|
||||
expressed as local time,
|
||||
in the structure pointed to by
|
||||
.I tm
|
||||
into a calendar time value with the same encoding as that of the values
|
||||
returned by the
|
||||
.I time
|
||||
function.
|
||||
The original values of the
|
||||
.B tm_wday
|
||||
and
|
||||
.B tm_yday
|
||||
components of the structure are ignored,
|
||||
and the original values of the other components are not restricted
|
||||
to their normal ranges.
|
||||
(A positive or zero value for
|
||||
.B tm_isdst
|
||||
causes
|
||||
.I mktime
|
||||
to presume initially that summer time (for example, Daylight Saving Time
|
||||
in the U.S.A.)
|
||||
respectively,
|
||||
is or is not in effect for the specified time.
|
||||
A negative value for
|
||||
.B tm_isdst
|
||||
causes the
|
||||
.I mktime
|
||||
function to attempt to divine whether summer time is in effect
|
||||
for the specified time.)
|
||||
On successful completion, the values of the
|
||||
.B tm_wday
|
||||
and
|
||||
.B tm_yday
|
||||
components of the structure are set appropriately,
|
||||
and the other components are set to represent the specified calendar time,
|
||||
but with their values forced to their normal ranges; the final value of
|
||||
.B tm_mday
|
||||
is not set until
|
||||
.B tm_mon
|
||||
and
|
||||
.B tm_year
|
||||
are determined.
|
||||
.I Mktime\^
|
||||
returns the specified calendar time;
|
||||
If the calendar time cannot be represented,
|
||||
it returns
|
||||
.BR -1 .
|
||||
.PP
|
||||
.I Difftime\^
|
||||
returns the difference between two calendar times,
|
||||
.RI ( time1
|
||||
-
|
||||
.IR time0 ),
|
||||
expressed in seconds.
|
||||
.PP
|
||||
Declarations of all the functions and externals, and the ``tm'' structure,
|
||||
are in the
|
||||
.B <time.h>\^
|
||||
header file.
|
||||
The structure (of type)
|
||||
.B struct tm
|
||||
includes the following fields:
|
||||
.RS
|
||||
.PP
|
||||
.nf
|
||||
.ta .5i +\w'long tm_gmtoff;\0\0'u
|
||||
int tm_sec; /\(** seconds (0 - 60) \(**/
|
||||
int tm_min; /\(** minutes (0 - 59) \(**/
|
||||
int tm_hour; /\(** hours (0 - 23) \(**/
|
||||
int tm_mday; /\(** day of month (1 - 31) \(**/
|
||||
int tm_mon; /\(** month of year (0 - 11) \(**/
|
||||
int tm_year; /\(** year \- 1900 \(**/
|
||||
int tm_wday; /\(** day of week (Sunday = 0) \(**/
|
||||
int tm_yday; /\(** day of year (0 - 365) \(**/
|
||||
int tm_isdst; /\(** is summer time in effect? \(**/
|
||||
char \(**tm_zone; /\(** abbreviation of timezone name \(**/
|
||||
long tm_gmtoff; /\(** offset from UTC in seconds \(**/
|
||||
.fi
|
||||
.RE
|
||||
.PP
|
||||
The
|
||||
.I tm_zone
|
||||
and
|
||||
.I tm_gmtoff
|
||||
fields exist, and are filled in, only if arrangements to do
|
||||
so were made when the library containing these functions was
|
||||
created.
|
||||
There is no guarantee that these fields will continue to exist
|
||||
in this form in future releases of this code.
|
||||
.PP
|
||||
.I Tm_isdst\^
|
||||
is non-zero if summer time is in effect.
|
||||
.PP
|
||||
.I Tm_gmtoff
|
||||
is the offset (in seconds) of the time represented
|
||||
from UTC, with positive values indicating east
|
||||
of the Prime Meridian.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.SH SEE ALSO
|
||||
getenv(3),
|
||||
newstrftime(3),
|
||||
newtzset(3),
|
||||
time(2),
|
||||
tzfile(5)
|
||||
.SH NOTES
|
||||
The return values point to static data;
|
||||
the data is overwritten by each call.
|
||||
The
|
||||
.B tm_zone
|
||||
field of a returned
|
||||
.B "struct tm"
|
||||
points to a static array of characters, which
|
||||
will also be overwritten at the next call
|
||||
(and by calls to
|
||||
.IR tzset ).
|
||||
.PP
|
||||
.I Asctime\^
|
||||
and
|
||||
.I ctime\^
|
||||
behave strangely for years before 1000 or after 9999.
|
||||
The 1989 and 1999 editions of the C Standard say
|
||||
that years from \-99 through 999 are converted without
|
||||
extra spaces, but this conflicts with longstanding
|
||||
tradition and with this implementation.
|
||||
Traditional implementations of these two functions are
|
||||
restricted to years in the range 1900 through 2099.
|
||||
To avoid this portability mess, new programs should use
|
||||
.I strftime\^
|
||||
instead.
|
||||
.PP
|
||||
Avoid using out-of-range values with
|
||||
.I mktime
|
||||
when setting up lunch with promptness sticklers in Riyadh.
|
||||
.\" @(#)newctime.3 7.17
|
147
commands/zoneinfo/newctime.3.txt
Normal file
147
commands/zoneinfo/newctime.3.txt
Normal file
|
@ -0,0 +1,147 @@
|
|||
NAME
|
||||
|
||||
asctime, ctime, difftime, gmtime, localtime, mktime -
|
||||
convert date and time to ASCII
|
||||
|
||||
SYNOPSIS
|
||||
extern char *tzname[2];
|
||||
|
||||
void tzset()
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
char *ctime(clock)
|
||||
const time_t *clock;
|
||||
|
||||
double difftime(time1, time0)
|
||||
time_t time1;
|
||||
time_t time0;
|
||||
|
||||
#include <time.h>
|
||||
|
||||
char *asctime(tm)
|
||||
const struct tm *tm;
|
||||
|
||||
struct tm *localtime(clock)
|
||||
const time_t *clock;
|
||||
|
||||
struct tm *gmtime(clock)
|
||||
const time_t *clock;
|
||||
|
||||
time_t mktime(tm)
|
||||
struct tm *tm;
|
||||
|
||||
cc ... -ltz
|
||||
|
||||
DESCRIPTION
|
||||
Ctime converts a long integer, pointed to by clock,
|
||||
representing the time in seconds since 00:00:00 UTC, 1970-
|
||||
01-01, and returns a pointer to a string of the form
|
||||
Thu Nov 24 18:22:48 1986\n\0
|
||||
Years requiring fewer than four characters are padded with
|
||||
leading zeroes. For years longer than four characters, the
|
||||
string is of the form
|
||||
Thu Nov 24 18:22:48 81986\n\0
|
||||
with five spaces before the year. These unusual formats are
|
||||
designed to make it less likely that older software that
|
||||
expects exactly 26 bytes of output will mistakenly output
|
||||
misleading values for out-of-range years.
|
||||
|
||||
Localtime and gmtime return pointers to ``tm'' structures,
|
||||
described below. Localtime corrects for the time zone and
|
||||
any time zone adjustments (such as Daylight Saving Time in
|
||||
the United States). After filling in the ``tm'' structure,
|
||||
localtime sets the tm_isdst'th element of tzname to a
|
||||
pointer to an ASCII string that's the time zone abbreviation
|
||||
to be used with localtime's return value.
|
||||
|
||||
Gmtime converts to Coordinated Universal Time.
|
||||
|
||||
Asctime converts a time value contained in a ``tm''
|
||||
structure to a string, as shown in the above example, and
|
||||
returns a pointer to the string.
|
||||
|
||||
Mktime converts the broken-down time, expressed as local
|
||||
time, in the structure pointed to by tm into a calendar time
|
||||
value with the same encoding as that of the values returned
|
||||
by the time function. The original values of the tm_wday
|
||||
and tm_yday components of the structure are ignored, and the
|
||||
original values of the other components are not restricted
|
||||
to their normal ranges. (A positive or zero value for
|
||||
tm_isdst causes mktime to presume initially that summer time
|
||||
(for example, Daylight Saving Time in the U.S.A.)
|
||||
respectively, is or is not in effect for the specified time.
|
||||
A negative value for tm_isdst causes the mktime function to
|
||||
attempt to divine whether summer time is in effect for the
|
||||
specified time.) On successful completion, the values of
|
||||
the tm_wday and tm_yday components of the structure are set
|
||||
appropriately, and the other components are set to represent
|
||||
the specified calendar time, but with their values forced to
|
||||
their normal ranges; the final value of tm_mday is not set
|
||||
until tm_mon and tm_year are determined. Mktime returns the
|
||||
specified calendar time; If the calendar time cannot be
|
||||
represented, it returns -1.
|
||||
|
||||
Difftime returns the difference between two calendar times,
|
||||
(time1 - time0), expressed in seconds.
|
||||
|
||||
Declarations of all the functions and externals, and the
|
||||
``tm'' structure, are in the <time.h> header file. The
|
||||
structure (of type) struct tm includes the following fields:
|
||||
|
||||
int tm_sec; /* seconds (0 - 60) */
|
||||
int tm_min; /* minutes (0 - 59) */
|
||||
int tm_hour; /* hours (0 - 23) */
|
||||
int tm_mday; /* day of month (1 - 31) */
|
||||
int tm_mon; /* month of year (0 - 11) */
|
||||
int tm_year; /* year - 1900 */
|
||||
int tm_wday; /* day of week (Sunday = 0) */
|
||||
int tm_yday; /* day of year (0 - 365) */
|
||||
int tm_isdst; /* is summer time in effect? */
|
||||
char *tm_zone; /* abbreviation of timezone name */
|
||||
long tm_gmtoff; /* offset from UTC in seconds */
|
||||
|
||||
The tm_zone and tm_gmtoff fields exist, and are filled in,
|
||||
only if arrangements to do so were made when the library
|
||||
containing these functions was created. There is no
|
||||
guarantee that these fields will continue to exist in this
|
||||
form in future releases of this code.
|
||||
|
||||
Tm_isdst is non-zero if summer time is in effect.
|
||||
|
||||
Tm_gmtoff is the offset (in seconds) of the time represented
|
||||
from UTC, with positive values indicating east of the Prime
|
||||
Meridian.
|
||||
|
||||
FILES
|
||||
/usr/local/etc/zoneinfo time zone information
|
||||
directory
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style
|
||||
TZ's
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
|
||||
If /usr/local/etc/zoneinfo/GMT is absent, UTC leap seconds
|
||||
are loaded from /usr/local/etc/zoneinfo/posixrules.
|
||||
|
||||
SEE ALSO
|
||||
getenv(3), newstrftime(3), newtzset(3), time(2), tzfile(5)
|
||||
|
||||
NOTES
|
||||
The return values point to static data; the data is
|
||||
overwritten by each call. The tm_zone field of a returned
|
||||
struct tm points to a static array of characters, which will
|
||||
also be overwritten at the next call (and by calls to
|
||||
tzset).
|
||||
|
||||
Asctime and ctime behave strangely for years before 1000 or
|
||||
after 9999. The 1989 and 1999 editions of the C Standard
|
||||
say that years from -99 through 999 are converted without
|
||||
extra spaces, but this conflicts with longstanding tradition
|
||||
and with this implementation. Traditional implementations
|
||||
of these two functions are restricted to years in the range
|
||||
1900 through 2099. To avoid this portability mess, new
|
||||
programs should use strftime instead.
|
||||
|
||||
Avoid using out-of-range values with mktime when setting up
|
||||
lunch with promptness sticklers in Riyadh.
|
230
commands/zoneinfo/newstrftime.3
Normal file
230
commands/zoneinfo/newstrftime.3
Normal file
|
@ -0,0 +1,230 @@
|
|||
.\" Based on the UCB file whose copyright information appears below.
|
||||
.\" Copyright (c) 1989, 1991 The Regents of the University of California.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" This code is derived from software contributed to Berkeley by
|
||||
.\" the American National Standards Committee X3, on Information
|
||||
.\" Processing Systems.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)strftime.3 5.12 (Berkeley) 6/29/91
|
||||
.\" $Id: strftime.3,v 1.4 1993/12/15 20:33:00 jtc Exp $
|
||||
.\"
|
||||
.TH NEWSTRFTIME 3
|
||||
.SH NAME
|
||||
strftime \- format date and time
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <sys/types.h>
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B size_t strftime(buf, maxsize, format, timeptr)
|
||||
.B char *buf;
|
||||
.B size_t maxsize;
|
||||
.B const char *format;
|
||||
.B const struct tm *timeptr
|
||||
.PP
|
||||
.B cc ... -ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.I strftime\^
|
||||
function formats the information from
|
||||
.I timeptr\^
|
||||
into the buffer
|
||||
.I buf\^
|
||||
according to the string pointed to by
|
||||
.IR format\^ .
|
||||
.PP
|
||||
The
|
||||
.I format\^
|
||||
string consists of zero or more conversion specifications and
|
||||
ordinary characters.
|
||||
All ordinary characters are copied directly into the buffer.
|
||||
A conversion specification consists of a percent sign
|
||||
.Ql %
|
||||
and one other character.
|
||||
.PP
|
||||
No more than
|
||||
.I maxsize\^
|
||||
characters are be placed into the array.
|
||||
If the total number of resulting characters, including the terminating
|
||||
null character, is not more than
|
||||
.IR maxsize\^ ,
|
||||
.I strftime\^
|
||||
returns the number of characters in the array, not counting the
|
||||
terminating null.
|
||||
Otherwise, zero is returned.
|
||||
.PP
|
||||
Each conversion specification is replaced by the characters as
|
||||
follows which are then copied into the buffer.
|
||||
.TP
|
||||
%A
|
||||
is replaced by the locale's full weekday name.
|
||||
.TP
|
||||
%a
|
||||
is replaced by the locale's abbreviated weekday name.
|
||||
.TP
|
||||
%B
|
||||
is replaced by the locale's full month name.
|
||||
.TP
|
||||
%b or %h
|
||||
is replaced by the locale's abbreviated month name.
|
||||
.TP
|
||||
%C
|
||||
is replaced by the century (a year divided by 100 and truncated to an integer)
|
||||
as a decimal number (00-99).
|
||||
.TP
|
||||
%c
|
||||
is replaced by the locale's appropriate date and time representation.
|
||||
.TP
|
||||
%D
|
||||
is replaced by the date in the format %m/%d/%y.
|
||||
.TP
|
||||
%d
|
||||
is replaced by the day of the month as a decimal number (01-31).
|
||||
.TP
|
||||
%e
|
||||
is replaced by the day of month as a decimal number (1-31);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%F
|
||||
is replaced by the date in the format %Y-%m-%d.
|
||||
.TP
|
||||
%G
|
||||
is replaced by the ISO 8601 year with century as a decimal number.
|
||||
.TP
|
||||
%g
|
||||
is replaced by the ISO 8601 year without century as a decimal number (00-99).
|
||||
.TP
|
||||
%H
|
||||
is replaced by the hour (24-hour clock) as a decimal number (00-23).
|
||||
.TP
|
||||
%I
|
||||
is replaced by the hour (12-hour clock) as a decimal number (01-12).
|
||||
.TP
|
||||
%j
|
||||
is replaced by the day of the year as a decimal number (001-366).
|
||||
.TP
|
||||
%k
|
||||
is replaced by the hour (24-hour clock) as a decimal number (0-23);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%l
|
||||
is replaced by the hour (12-hour clock) as a decimal number (1-12);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%M
|
||||
is replaced by the minute as a decimal number (00-59).
|
||||
.TP
|
||||
%m
|
||||
is replaced by the month as a decimal number (01-12).
|
||||
.TP
|
||||
%n
|
||||
is replaced by a newline.
|
||||
.TP
|
||||
%p
|
||||
is replaced by the locale's equivalent of either AM or PM.
|
||||
.TP
|
||||
%R
|
||||
is replaced by the time in the format %H:%M.
|
||||
.TP
|
||||
%r
|
||||
is replaced by the locale's representation of 12-hour clock time
|
||||
using AM/PM notation.
|
||||
.TP
|
||||
%S
|
||||
is replaced by the second as a decimal number (00-60).
|
||||
.TP
|
||||
%s
|
||||
is replaced by the number of seconds since the Epoch, UTC (see mktime(3)).
|
||||
.TP
|
||||
%T
|
||||
is replaced by the time in the format %H:%M:%S.
|
||||
.TP
|
||||
%t
|
||||
is replaced by a tab.
|
||||
.TP
|
||||
%U
|
||||
is replaced by the week number of the year (Sunday as the first day of
|
||||
the week) as a decimal number (00-53).
|
||||
.TP
|
||||
%u
|
||||
is replaced by the weekday (Monday as the first day of the week)
|
||||
as a decimal number (1-7).
|
||||
.TP
|
||||
%V
|
||||
is replaced by the week number of the year (Monday as the first day of
|
||||
the week) as a decimal number (01-53). If the week containing January
|
||||
1 has four or more days in the new year, then it is week 1; otherwise
|
||||
it is week 53 of the previous year, and the next week is week 1.
|
||||
.TP
|
||||
%W
|
||||
is replaced by the week number of the year (Monday as the first day of
|
||||
the week) as a decimal number (00-53).
|
||||
.TP
|
||||
%w
|
||||
is replaced by the weekday (Sunday as the first day of the week)
|
||||
as a decimal number (0-6).
|
||||
.TP
|
||||
%X
|
||||
is replaced by the locale's appropriate time representation.
|
||||
.TP
|
||||
%x
|
||||
is replaced by the locale's appropriate date representation.
|
||||
.TP
|
||||
%Y
|
||||
is replaced by the year with century as a decimal number.
|
||||
.TP
|
||||
%y
|
||||
is replaced by the year without century as a decimal number (00-99).
|
||||
.TP
|
||||
%Z
|
||||
is replaced by the time zone name,
|
||||
or by the empty string if this is not determinable.
|
||||
.TP
|
||||
%z
|
||||
is replaced by the offset from UTC in the format +HHMM or -HHMM as appropriate,
|
||||
with positive values representing locations east of Greenwich,
|
||||
or by the empty string if this is not determinable.
|
||||
.TP
|
||||
%%
|
||||
is replaced by a single %.
|
||||
.TP
|
||||
%+
|
||||
is replaced by the date and time in date(1) format.
|
||||
.SH SEE ALSO
|
||||
date(1),
|
||||
getenv(3),
|
||||
newctime(3),
|
||||
newtzset(3),
|
||||
time(2),
|
||||
tzfile(5)
|
||||
.\" @(#)newstrftime.3 7.15
|
152
commands/zoneinfo/newstrftime.3.txt
Normal file
152
commands/zoneinfo/newstrftime.3.txt
Normal file
|
@ -0,0 +1,152 @@
|
|||
NAME
|
||||
|
||||
strftime - format date and time
|
||||
|
||||
SYNOPSIS
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
size_t strftime(buf, maxsize, format, timeptr)
|
||||
char *buf;
|
||||
size_t maxsize;
|
||||
const char *format;
|
||||
const struct tm *timeptr
|
||||
|
||||
cc ... -ltz
|
||||
|
||||
DESCRIPTION
|
||||
The strftime function formats the information from timeptr
|
||||
into the buffer buf according to the string pointed to by
|
||||
format.
|
||||
|
||||
The format string consists of zero or more conversion
|
||||
specifications and ordinary characters. All ordinary
|
||||
characters are copied directly into the buffer. A
|
||||
conversion specification consists of a percent sign and one
|
||||
other character.
|
||||
|
||||
No more than maxsize characters are be placed into the
|
||||
array. If the total number of resulting characters,
|
||||
including the terminating null character, is not more than
|
||||
maxsize, strftime returns the number of characters in the
|
||||
array, not counting the terminating null. Otherwise, zero
|
||||
is returned.
|
||||
|
||||
Each conversion specification is replaced by the characters
|
||||
as follows which are then copied into the buffer.
|
||||
|
||||
%A is replaced by the locale's full weekday name.
|
||||
|
||||
%a is replaced by the locale's abbreviated weekday name.
|
||||
|
||||
%B is replaced by the locale's full month name.
|
||||
|
||||
%b or %h
|
||||
is replaced by the locale's abbreviated month name.
|
||||
|
||||
%C is replaced by the century (a year divided by 100 and
|
||||
truncated to an integer) as a decimal number (00-99).
|
||||
|
||||
%c is replaced by the locale's appropriate date and time
|
||||
representation.
|
||||
|
||||
%D is replaced by the date in the format %m/%d/%y.
|
||||
|
||||
%d is replaced by the day of the month as a decimal number
|
||||
(01-31).
|
||||
|
||||
%e is replaced by the day of month as a decimal number
|
||||
(1-31); single digits are preceded by a blank.
|
||||
|
||||
%F is replaced by the date in the format %Y-%m-%d.
|
||||
|
||||
%G is replaced by the ISO 8601 year with century as a
|
||||
decimal number.
|
||||
|
||||
%g is replaced by the ISO 8601 year without century as a
|
||||
decimal number (00-99).
|
||||
|
||||
%H is replaced by the hour (24-hour clock) as a decimal
|
||||
number (00-23).
|
||||
|
||||
%I is replaced by the hour (12-hour clock) as a decimal
|
||||
number (01-12).
|
||||
|
||||
%j is replaced by the day of the year as a decimal number
|
||||
(001-366).
|
||||
|
||||
%k is replaced by the hour (24-hour clock) as a decimal
|
||||
number (0-23); single digits are preceded by a blank.
|
||||
|
||||
%l is replaced by the hour (12-hour clock) as a decimal
|
||||
number (1-12); single digits are preceded by a blank.
|
||||
|
||||
%M is replaced by the minute as a decimal number (00-59).
|
||||
|
||||
%m is replaced by the month as a decimal number (01-12).
|
||||
|
||||
%n is replaced by a newline.
|
||||
|
||||
%p is replaced by the locale's equivalent of either AM or
|
||||
PM.
|
||||
|
||||
%R is replaced by the time in the format %H:%M.
|
||||
|
||||
%r is replaced by the locale's representation of 12-hour
|
||||
clock time using AM/PM notation.
|
||||
|
||||
%S is replaced by the second as a decimal number (00-60).
|
||||
|
||||
%s is replaced by the number of seconds since the Epoch,
|
||||
UTC (see mktime(3)).
|
||||
|
||||
%T is replaced by the time in the format %H:%M:%S.
|
||||
|
||||
%t is replaced by a tab.
|
||||
|
||||
%U is replaced by the week number of the year (Sunday as
|
||||
the first day of the week) as a decimal number (00-53).
|
||||
|
||||
%u is replaced by the weekday (Monday as the first day of
|
||||
the week) as a decimal number (1-7).
|
||||
|
||||
%V is replaced by the week number of the year (Monday as
|
||||
the first day of the week) as a decimal number (01-53).
|
||||
If the week containing January 1 has four or more days
|
||||
in the new year, then it is week 1; otherwise it is
|
||||
week 53 of the previous year, and the next week is week
|
||||
1.
|
||||
|
||||
%W is replaced by the week number of the year (Monday as
|
||||
the first day of the week) as a decimal number (00-53).
|
||||
|
||||
%w is replaced by the weekday (Sunday as the first day of
|
||||
the week) as a decimal number (0-6).
|
||||
|
||||
%X is replaced by the locale's appropriate time
|
||||
representation.
|
||||
|
||||
%x is replaced by the locale's appropriate date
|
||||
representation.
|
||||
|
||||
%Y is replaced by the year with century as a decimal
|
||||
number.
|
||||
|
||||
%y is replaced by the year without century as a decimal
|
||||
number (00-99).
|
||||
|
||||
%Z is replaced by the time zone name, or by the empty
|
||||
string if this is not determinable.
|
||||
|
||||
%z is replaced by the offset from UTC in the format +HHMM
|
||||
or -HHMM as appropriate, with positive values
|
||||
representing locations east of Greenwich, or by the
|
||||
empty string if this is not determinable.
|
||||
|
||||
%% is replaced by a single %.
|
||||
|
||||
%+ is replaced by the date and time in date(1) format.
|
||||
|
||||
SEE ALSO
|
||||
date(1), getenv(3), newctime(3), newtzset(3), time(2),
|
||||
tzfile(5)
|
237
commands/zoneinfo/newtzset.3
Normal file
237
commands/zoneinfo/newtzset.3
Normal file
|
@ -0,0 +1,237 @@
|
|||
.TH NEWTZSET 3
|
||||
.SH NAME
|
||||
tzset \- initialize time conversion information
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B void tzset()
|
||||
.PP
|
||||
.B cc ... -ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.I Tzset
|
||||
uses the value of the environment variable
|
||||
.B TZ
|
||||
to set time conversion information used by
|
||||
.IR localtime .
|
||||
If
|
||||
.B TZ
|
||||
does not appear in the environment,
|
||||
the best available approximation to local wall clock time, as specified
|
||||
by the
|
||||
.IR tzfile (5)-format
|
||||
file
|
||||
.B localtime
|
||||
in the system time conversion information directory, is used by
|
||||
.IR localtime .
|
||||
If
|
||||
.B TZ
|
||||
appears in the environment but its value is a null string,
|
||||
Coordinated Universal Time (UTC) is used (without leap second
|
||||
correction). If
|
||||
.B TZ
|
||||
appears in the environment and its value is not a null string:
|
||||
.IP
|
||||
if the value begins with a colon, it is used as a pathname of a file
|
||||
from which to read the time conversion information;
|
||||
.IP
|
||||
if the value does not begin with a colon, it is first used as the
|
||||
pathname of a file from which to read the time conversion information,
|
||||
and, if that file cannot be read, is used directly as a specification of
|
||||
the time conversion information.
|
||||
.PP
|
||||
When
|
||||
.B TZ
|
||||
is used as a pathname, if it begins with a slash,
|
||||
it is used as an absolute pathname; otherwise,
|
||||
it is used as a pathname relative to a system time conversion information
|
||||
directory.
|
||||
The file must be in the format specified in
|
||||
.IR tzfile (5).
|
||||
.PP
|
||||
When
|
||||
.B TZ
|
||||
is used directly as a specification of the time conversion information,
|
||||
it must have the following syntax (spaces inserted for clarity):
|
||||
.IP
|
||||
\fIstd\|offset\fR[\fIdst\fR[\fIoffset\fR][\fB,\fIrule\fR]]
|
||||
.PP
|
||||
Where:
|
||||
.RS
|
||||
.TP 15
|
||||
.IR std " and " dst
|
||||
Three or more bytes that are the designation for the standard
|
||||
.RI ( std )
|
||||
or summer
|
||||
.RI ( dst )
|
||||
time zone. Only
|
||||
.I std
|
||||
is required; if
|
||||
.I dst
|
||||
is missing, then summer time does not apply in this locale.
|
||||
Upper- and lowercase letters are explicitly allowed. Any characters
|
||||
except a leading colon
|
||||
.RB ( : ),
|
||||
digits, comma
|
||||
.RB ( , ),
|
||||
minus
|
||||
.RB ( \(mi ),
|
||||
plus
|
||||
.RB ( \(pl ),
|
||||
and ASCII NUL are allowed.
|
||||
.TP
|
||||
.I offset
|
||||
Indicates the value one must add to the local time to arrive at
|
||||
Coordinated Universal Time. The
|
||||
.I offset
|
||||
has the form:
|
||||
.RS
|
||||
.IP
|
||||
\fIhh\fR[\fB:\fImm\fR[\fB:\fIss\fR]]
|
||||
.RE
|
||||
.IP
|
||||
The minutes
|
||||
.RI ( mm )
|
||||
and seconds
|
||||
.RI ( ss )
|
||||
are optional. The hour
|
||||
.RI ( hh )
|
||||
is required and may be a single digit. The
|
||||
.I offset
|
||||
following
|
||||
.I std
|
||||
is required. If no
|
||||
.I offset
|
||||
follows
|
||||
.IR dst ,
|
||||
summer time is assumed to be one hour ahead of standard time. One or
|
||||
more digits may be used; the value is always interpreted as a decimal
|
||||
number. The hour must be between zero and 24, and the minutes (and
|
||||
seconds) \(em if present \(em between zero and 59. If preceded by a
|
||||
.RB `` \(mi '',
|
||||
the time zone shall be east of the Prime Meridian; otherwise it shall be
|
||||
west (which may be indicated by an optional preceding
|
||||
.RB `` \(pl '').
|
||||
.TP
|
||||
.I rule
|
||||
Indicates when to change to and back from summer time. The
|
||||
.I rule
|
||||
has the form:
|
||||
.RS
|
||||
.IP
|
||||
\fIdate\fB/\fItime\fB,\fIdate\fB/\fItime\fR
|
||||
.RE
|
||||
.IP
|
||||
where the first
|
||||
.I date
|
||||
describes when the change from standard to summer time occurs and the
|
||||
second
|
||||
.I date
|
||||
describes when the change back happens. Each
|
||||
.I time
|
||||
field describes when, in current local time, the change to the other
|
||||
time is made.
|
||||
.IP
|
||||
The format of
|
||||
.I date
|
||||
is one of the following:
|
||||
.RS
|
||||
.TP 10
|
||||
.BI J n
|
||||
The Julian day
|
||||
.I n
|
||||
.RI "(1\ \(<=" "\ n\ " "\(<=\ 365).
|
||||
Leap days are not counted; that is, in all years \(em including leap
|
||||
years \(em February 28 is day 59 and March 1 is day 60. It is
|
||||
impossible to explicitly refer to the occasional February 29.
|
||||
.TP
|
||||
.I n
|
||||
The zero-based Julian day
|
||||
.RI "(0\ \(<=" "\ n\ " "\(<=\ 365).
|
||||
Leap days are counted, and it is possible to refer to February 29.
|
||||
.TP
|
||||
.BI M m . n . d
|
||||
The
|
||||
.IR d' th
|
||||
day
|
||||
.RI "(0\ \(<=" "\ d\ " "\(<=\ 6)
|
||||
of week
|
||||
.I n
|
||||
of month
|
||||
.I m
|
||||
of the year
|
||||
.RI "(1\ \(<=" "\ n\ " "\(<=\ 5,
|
||||
.RI "1\ \(<=" "\ m\ " "\(<=\ 12,
|
||||
where week 5 means ``the last
|
||||
.I d
|
||||
day in month
|
||||
.IR m ''
|
||||
which may occur in either the fourth or the fifth week). Week 1 is the
|
||||
first week in which the
|
||||
.IR d' th
|
||||
day occurs. Day zero is Sunday.
|
||||
.RE
|
||||
.IP "" 15
|
||||
The
|
||||
.I time
|
||||
has the same format as
|
||||
.I offset
|
||||
except that no leading sign
|
||||
.RB (`` \(mi ''
|
||||
or
|
||||
.RB `` \(pl '')
|
||||
is allowed. The default, if
|
||||
.I time
|
||||
is not given, is
|
||||
.BR 02:00:00 .
|
||||
.RE
|
||||
.LP
|
||||
If no
|
||||
.I rule
|
||||
is present in
|
||||
.BR TZ ,
|
||||
the rules specified
|
||||
by the
|
||||
.IR tzfile (5)-format
|
||||
file
|
||||
.B posixrules
|
||||
in the system time conversion information directory are used, with the
|
||||
standard and summer time offsets from UTC replaced by those specified by
|
||||
the
|
||||
.I offset
|
||||
values in
|
||||
.BR TZ .
|
||||
.PP
|
||||
For compatibility with System V Release 3.1, a semicolon
|
||||
.RB ( ; )
|
||||
may be used to separate the
|
||||
.I rule
|
||||
from the rest of the specification.
|
||||
.PP
|
||||
If the
|
||||
.B TZ
|
||||
environment variable does not specify a
|
||||
.IR tzfile (5)-format
|
||||
and cannot be interpreted as a direct specification,
|
||||
UTC is used.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.SH SEE ALSO
|
||||
getenv(3),
|
||||
newctime(3),
|
||||
newstrftime(3),
|
||||
time(2),
|
||||
tzfile(5)
|
||||
.\" @(#)newtzset.3 7.5
|
153
commands/zoneinfo/newtzset.3.txt
Normal file
153
commands/zoneinfo/newtzset.3.txt
Normal file
|
@ -0,0 +1,153 @@
|
|||
NAME
|
||||
|
||||
tzset - initialize time conversion information
|
||||
|
||||
SYNOPSIS
|
||||
void tzset()
|
||||
|
||||
cc ... -ltz
|
||||
|
||||
DESCRIPTION
|
||||
Tzset uses the value of the environment variable TZ to set
|
||||
time conversion information used by localtime. If TZ does
|
||||
not appear in the environment, the best available
|
||||
approximation to local wall clock time, as specified by the
|
||||
tzfile(5)-format file localtime in the system time
|
||||
conversion information directory, is used by localtime. If
|
||||
TZ appears in the environment but its value is a null
|
||||
string, Coordinated Universal Time (UTC) is used (without
|
||||
leap second correction). If TZ appears in the environment
|
||||
and its value is not a null string:
|
||||
|
||||
if the value begins with a colon, it is used as a
|
||||
pathname of a file from which to read the time
|
||||
conversion information;
|
||||
|
||||
if the value does not begin with a colon, it is first
|
||||
used as the pathname of a file from which to read the
|
||||
time conversion information, and, if that file cannot
|
||||
be read, is used directly as a specification of the
|
||||
time conversion information.
|
||||
|
||||
When TZ is used as a pathname, if it begins with a slash, it
|
||||
is used as an absolute pathname; otherwise, it is used as a
|
||||
pathname relative to a system time conversion information
|
||||
directory. The file must be in the format specified in
|
||||
tzfile(5).
|
||||
|
||||
When TZ is used directly as a specification of the time
|
||||
conversion information, it must have the following syntax
|
||||
(spaces inserted for clarity):
|
||||
|
||||
stdoffset[dst[offset][,rule]]
|
||||
|
||||
Where:
|
||||
|
||||
std and dst Three or more bytes that are the
|
||||
designation for the standard (std) or
|
||||
summer (dst) time zone. Only std is
|
||||
required; if dst is missing, then summer
|
||||
time does not apply in this locale.
|
||||
Upper- and lowercase letters are
|
||||
explicitly allowed. Any characters
|
||||
except a leading colon (:), digits,
|
||||
comma (,), minus (-), plus (+), and
|
||||
ASCII NUL are allowed.
|
||||
|
||||
offset Indicates the value one must add to the
|
||||
local time to arrive at Coordinated
|
||||
Universal Time. The offset has the
|
||||
form:
|
||||
|
||||
hh[:mm[:ss]]
|
||||
|
||||
The minutes (mm) and seconds (ss) are
|
||||
optional. The hour (hh) is required and
|
||||
may be a single digit. The offset
|
||||
following std is required. If no offset
|
||||
follows dst, summer time is assumed to
|
||||
be one hour ahead of standard time. One
|
||||
or more digits may be used; the value is
|
||||
always interpreted as a decimal number.
|
||||
The hour must be between zero and 24,
|
||||
and the minutes (and seconds) - if
|
||||
present - between zero and 59. If
|
||||
preceded by a ``-'', the time zone shall
|
||||
be east of the Prime Meridian; otherwise
|
||||
it shall be west (which may be indicated
|
||||
by an optional preceding ``+'').
|
||||
|
||||
rule Indicates when to change to and back
|
||||
from summer time. The rule has the
|
||||
form:
|
||||
|
||||
date/time,date/time
|
||||
|
||||
where the first date describes when the
|
||||
change from standard to summer time
|
||||
occurs and the second date describes
|
||||
when the change back happens. Each time
|
||||
field describes when, in current local
|
||||
time, the change to the other time is
|
||||
made.
|
||||
|
||||
The format of date is one of the
|
||||
following:
|
||||
|
||||
Jn The Julian day n
|
||||
(1 < n < 365). Leap days are
|
||||
not counted; that is, in all
|
||||
years - including leap years -
|
||||
February 28 is day 59 and
|
||||
March 1 is day 60. It is
|
||||
impossible to explicitly refer
|
||||
to the occasional February 29.
|
||||
|
||||
n The zero-based Julian day
|
||||
(0 < n < 365). Leap days are
|
||||
counted, and it is possible to
|
||||
refer to February 29.
|
||||
|
||||
Mm.n.d The d'th day (0 < d < 6) of
|
||||
week n of month m of the year
|
||||
(1 < n < 5, 1 < m < 12, where
|
||||
week 5 means ``the last d day
|
||||
in month m'' which may occur
|
||||
in either the fourth or the
|
||||
fifth week). Week 1 is the
|
||||
first week in which the d'th
|
||||
day occurs. Day zero is
|
||||
Sunday.
|
||||
|
||||
The time has the same format as offset
|
||||
except that no leading sign (``-'' or
|
||||
``+'') is allowed. The default, if time
|
||||
is not given, is 02:00:00.
|
||||
|
||||
If no rule is present in TZ, the rules specified by the
|
||||
tzfile(5)-format file posixrules in the system time
|
||||
conversion information directory are used, with the standard
|
||||
and summer time offsets from UTC replaced by those specified
|
||||
by the offset values in TZ.
|
||||
|
||||
For compatibility with System V Release 3.1, a semicolon (;)
|
||||
may be used to separate the rule from the rest of the
|
||||
specification.
|
||||
|
||||
If the TZ environment variable does not specify a
|
||||
tzfile(5)-format and cannot be interpreted as a direct
|
||||
specification, UTC is used.
|
||||
|
||||
FILES
|
||||
/usr/local/etc/zoneinfo time zone information
|
||||
directory
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style
|
||||
TZ's
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
|
||||
If /usr/local/etc/zoneinfo/GMT is absent, UTC leap seconds
|
||||
are loaded from /usr/local/etc/zoneinfo/posixrules.
|
||||
|
||||
SEE ALSO
|
||||
getenv(3), newctime(3), newstrftime(3), time(2), tzfile(5)
|
2537
commands/zoneinfo/northamerica
Normal file
2537
commands/zoneinfo/northamerica
Normal file
File diff suppressed because it is too large
Load diff
26
commands/zoneinfo/pacificnew
Normal file
26
commands/zoneinfo/pacificnew
Normal file
|
@ -0,0 +1,26 @@
|
|||
# @(#)pacificnew 8.1
|
||||
|
||||
# From Arthur David Olson (1989-04-05):
|
||||
# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
|
||||
# establishing "Pacific Presidential Election Time"; it was not acted on
|
||||
# by the Senate or signed into law by the President.
|
||||
# You might want to change the "PE" (Presidential Election) below to
|
||||
# "Q" (Quadrennial) to maintain three-character zone abbreviations.
|
||||
# If you're really conservative, you might want to change it to "D".
|
||||
# Avoid "L" (Leap Year), which won't be true in 2100.
|
||||
|
||||
# If Presidential Election Time is ever established, replace "XXXX" below
|
||||
# with the year the law takes effect and uncomment the "##" lines.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
|
||||
## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
|
||||
## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
|
||||
## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
|
||||
## -8:00 Twilite P%sT
|
||||
|
||||
# For now...
|
||||
Link America/Los_Angeles US/Pacific-New ##
|
316
commands/zoneinfo/private.h
Normal file
316
commands/zoneinfo/private.h
Normal file
|
@ -0,0 +1,316 @@
|
|||
#ifndef PRIVATE_H
|
||||
|
||||
#define PRIVATE_H
|
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of
|
||||
** 1996-06-05 by Arthur David Olson.
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code.
|
||||
** There is no guarantee that it will remain unchanged,
|
||||
** or that it will remain at all.
|
||||
** Do NOT copy it to any system include directory.
|
||||
** Thank you!
|
||||
*/
|
||||
|
||||
/*
|
||||
** ID
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char privatehid[] = "@(#)private.h 7.55";
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
#define GRANDPARENTED "Local time zone must be set--see zic manual page"
|
||||
|
||||
/*
|
||||
** Defaults for preprocessor symbols.
|
||||
** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'.
|
||||
*/
|
||||
|
||||
#ifndef HAVE_ADJTIME
|
||||
#define HAVE_ADJTIME 1
|
||||
#endif /* !defined HAVE_ADJTIME */
|
||||
|
||||
#ifndef HAVE_GETTEXT
|
||||
#define HAVE_GETTEXT 0
|
||||
#endif /* !defined HAVE_GETTEXT */
|
||||
|
||||
#ifndef HAVE_INCOMPATIBLE_CTIME_R
|
||||
#define HAVE_INCOMPATIBLE_CTIME_R 0
|
||||
#endif /* !defined INCOMPATIBLE_CTIME_R */
|
||||
|
||||
#ifndef HAVE_SETTIMEOFDAY
|
||||
#define HAVE_SETTIMEOFDAY 3
|
||||
#endif /* !defined HAVE_SETTIMEOFDAY */
|
||||
|
||||
#ifndef HAVE_STRERROR
|
||||
#define HAVE_STRERROR 1
|
||||
#endif /* !defined HAVE_STRERROR */
|
||||
|
||||
#ifndef HAVE_SYMLINK
|
||||
#define HAVE_SYMLINK 1
|
||||
#endif /* !defined HAVE_SYMLINK */
|
||||
|
||||
#ifndef HAVE_SYS_STAT_H
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
#endif /* !defined HAVE_SYS_STAT_H */
|
||||
|
||||
#ifndef HAVE_SYS_WAIT_H
|
||||
#define HAVE_SYS_WAIT_H 1
|
||||
#endif /* !defined HAVE_SYS_WAIT_H */
|
||||
|
||||
#ifndef HAVE_UNISTD_H
|
||||
#define HAVE_UNISTD_H 1
|
||||
#endif /* !defined HAVE_UNISTD_H */
|
||||
|
||||
#ifndef HAVE_UTMPX_H
|
||||
#define HAVE_UTMPX_H 0
|
||||
#endif /* !defined HAVE_UTMPX_H */
|
||||
|
||||
#ifndef LOCALE_HOME
|
||||
#define LOCALE_HOME "/usr/lib/locale"
|
||||
#endif /* !defined LOCALE_HOME */
|
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R
|
||||
#define asctime_r _incompatible_asctime_r
|
||||
#define ctime_r _incompatible_ctime_r
|
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */
|
||||
|
||||
/*
|
||||
** Nested includes
|
||||
*/
|
||||
|
||||
#include "sys/types.h" /* for time_t */
|
||||
#include "stdio.h"
|
||||
#include "errno.h"
|
||||
#include "string.h"
|
||||
#include "limits.h" /* for CHAR_BIT */
|
||||
#include "time.h"
|
||||
#include "stdlib.h"
|
||||
|
||||
#if HAVE_GETTEXT
|
||||
#include "libintl.h"
|
||||
#endif /* HAVE_GETTEXT */
|
||||
|
||||
#if HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
|
||||
#endif /* HAVE_SYS_WAIT_H */
|
||||
|
||||
#ifndef WIFEXITED
|
||||
#define WIFEXITED(status) (((status) & 0xff) == 0)
|
||||
#endif /* !defined WIFEXITED */
|
||||
#ifndef WEXITSTATUS
|
||||
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
|
||||
#endif /* !defined WEXITSTATUS */
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include "unistd.h" /* for F_OK and R_OK */
|
||||
#endif /* HAVE_UNISTD_H */
|
||||
|
||||
#if !HAVE_UNISTD_H
|
||||
#ifndef F_OK
|
||||
#define F_OK 0
|
||||
#endif /* !defined F_OK */
|
||||
#ifndef R_OK
|
||||
#define R_OK 4
|
||||
#endif /* !defined R_OK */
|
||||
#endif /* !HAVE_UNISTD_H */
|
||||
|
||||
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
|
||||
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
|
||||
|
||||
/*
|
||||
** Workarounds for compilers/systems.
|
||||
*/
|
||||
|
||||
/*
|
||||
** SunOS 4.1.1 cc lacks prototypes.
|
||||
*/
|
||||
|
||||
#ifndef P
|
||||
#if __STDC__
|
||||
#define P(x) x
|
||||
#else /* !__STDC__ */
|
||||
#define P(x) ()
|
||||
#endif /* !__STDC__ */
|
||||
#endif /* !defined P */
|
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_SUCCESS.
|
||||
*/
|
||||
|
||||
#ifndef EXIT_SUCCESS
|
||||
#define EXIT_SUCCESS 0
|
||||
#endif /* !defined EXIT_SUCCESS */
|
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_FAILURE.
|
||||
*/
|
||||
|
||||
#ifndef EXIT_FAILURE
|
||||
#define EXIT_FAILURE 1
|
||||
#endif /* !defined EXIT_FAILURE */
|
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack FILENAME_MAX.
|
||||
*/
|
||||
|
||||
#ifndef FILENAME_MAX
|
||||
|
||||
#ifndef MAXPATHLEN
|
||||
#ifdef unix
|
||||
#include "sys/param.h"
|
||||
#endif /* defined unix */
|
||||
#endif /* !defined MAXPATHLEN */
|
||||
|
||||
#ifdef MAXPATHLEN
|
||||
#define FILENAME_MAX MAXPATHLEN
|
||||
#endif /* defined MAXPATHLEN */
|
||||
#ifndef MAXPATHLEN
|
||||
#define FILENAME_MAX 1024 /* Pure guesswork */
|
||||
#endif /* !defined MAXPATHLEN */
|
||||
|
||||
#endif /* !defined FILENAME_MAX */
|
||||
|
||||
/*
|
||||
** SunOS 4.1.1 libraries lack remove.
|
||||
*/
|
||||
|
||||
#ifndef remove
|
||||
extern int unlink P((const char * filename));
|
||||
#define remove unlink
|
||||
#endif /* !defined remove */
|
||||
|
||||
/*
|
||||
** Some ancient errno.h implementations don't declare errno.
|
||||
** But some newer errno.h implementations define it as a macro.
|
||||
** Fix the former without affecting the latter.
|
||||
*/
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif /* !defined errno */
|
||||
|
||||
/*
|
||||
** Some time.h implementations don't declare asctime_r.
|
||||
** Others might define it as a macro.
|
||||
** Fix the former without affecting the latter.
|
||||
*/
|
||||
|
||||
#ifndef asctime_r
|
||||
extern char * asctime_r();
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Private function declarations.
|
||||
*/
|
||||
|
||||
char * icalloc P((int nelem, int elsize));
|
||||
char * icatalloc P((char * old, const char * new));
|
||||
char * icpyalloc P((const char * string));
|
||||
char * imalloc P((int n));
|
||||
void * irealloc P((void * pointer, int size));
|
||||
void icfree P((char * pointer));
|
||||
void ifree P((char * pointer));
|
||||
const char *scheck P((const char *string, const char *format));
|
||||
|
||||
/*
|
||||
** Finally, some convenience items.
|
||||
*/
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif /* !defined TRUE */
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif /* !defined FALSE */
|
||||
|
||||
#ifndef TYPE_BIT
|
||||
#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT)
|
||||
#endif /* !defined TYPE_BIT */
|
||||
|
||||
#ifndef TYPE_SIGNED
|
||||
#define TYPE_SIGNED(type) (((type) -1) < 0)
|
||||
#endif /* !defined TYPE_SIGNED */
|
||||
|
||||
/*
|
||||
** Since the definition of TYPE_INTEGRAL contains floating point numbers,
|
||||
** it cannot be used in preprocessor directives.
|
||||
*/
|
||||
|
||||
#ifndef TYPE_INTEGRAL
|
||||
#define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5)
|
||||
#endif /* !defined TYPE_INTEGRAL */
|
||||
|
||||
#ifndef INT_STRLEN_MAXIMUM
|
||||
/*
|
||||
** 302 / 1000 is log10(2.0) rounded up.
|
||||
** Subtract one for the sign bit if the type is signed;
|
||||
** add one for integer division truncation;
|
||||
** add one more for a minus sign if the type is signed.
|
||||
*/
|
||||
#define INT_STRLEN_MAXIMUM(type) \
|
||||
((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
|
||||
1 + TYPE_SIGNED(type))
|
||||
#endif /* !defined INT_STRLEN_MAXIMUM */
|
||||
|
||||
/*
|
||||
** INITIALIZE(x)
|
||||
*/
|
||||
|
||||
#ifndef GNUC_or_lint
|
||||
#ifdef lint
|
||||
#define GNUC_or_lint
|
||||
#endif /* defined lint */
|
||||
#ifndef lint
|
||||
#ifdef __GNUC__
|
||||
#define GNUC_or_lint
|
||||
#endif /* defined __GNUC__ */
|
||||
#endif /* !defined lint */
|
||||
#endif /* !defined GNUC_or_lint */
|
||||
|
||||
#ifndef INITIALIZE
|
||||
#ifdef GNUC_or_lint
|
||||
#define INITIALIZE(x) ((x) = 0)
|
||||
#endif /* defined GNUC_or_lint */
|
||||
#ifndef GNUC_or_lint
|
||||
#define INITIALIZE(x)
|
||||
#endif /* !defined GNUC_or_lint */
|
||||
#endif /* !defined INITIALIZE */
|
||||
|
||||
/*
|
||||
** For the benefit of GNU folk...
|
||||
** `_(MSGID)' uses the current locale's message library string for MSGID.
|
||||
** The default is to use gettext if available, and use MSGID otherwise.
|
||||
*/
|
||||
|
||||
#ifndef _
|
||||
#if HAVE_GETTEXT
|
||||
#define _(msgid) gettext(msgid)
|
||||
#else /* !HAVE_GETTEXT */
|
||||
#define _(msgid) msgid
|
||||
#endif /* !HAVE_GETTEXT */
|
||||
#endif /* !defined _ */
|
||||
|
||||
#ifndef TZ_DOMAIN
|
||||
#define TZ_DOMAIN "tz"
|
||||
#endif /* !defined TZ_DOMAIN */
|
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R
|
||||
#undef asctime_r
|
||||
#undef ctime_r
|
||||
char *asctime_r P((struct tm const *, char *));
|
||||
char *ctime_r P((time_t const *, char *));
|
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */
|
||||
|
||||
/*
|
||||
** UNIX was a registered trademark of The Open Group in 2003.
|
||||
*/
|
||||
|
||||
#endif /* !defined PRIVATE_H */
|
64
commands/zoneinfo/scheck.c
Normal file
64
commands/zoneinfo/scheck.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
#
|
||||
|
||||
/*LINTLIBRARY*/
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char sccsid[] = "@(#)scheck.c 7.15";
|
||||
#endif /* !NOID */
|
||||
#endif /* !lint */
|
||||
|
||||
#include "ctype.h"
|
||||
|
||||
extern char * imalloc();
|
||||
|
||||
char *
|
||||
scheck(string, format)
|
||||
char * string;
|
||||
char * format;
|
||||
{
|
||||
register char * fbuf;
|
||||
register char * fp;
|
||||
register char * tp;
|
||||
register int c;
|
||||
register char * result;
|
||||
char dummy;
|
||||
|
||||
result = "";
|
||||
if (string == NULL || format == NULL)
|
||||
return result;
|
||||
fbuf = imalloc(2 * strlen(format) + 4);
|
||||
if (fbuf == NULL)
|
||||
return result;
|
||||
fp = format;
|
||||
tp = fbuf;
|
||||
while ((*tp++ = c = *fp++) != '\0') {
|
||||
if (c != '%')
|
||||
continue;
|
||||
if (*fp == '%') {
|
||||
*tp++ = *fp++;
|
||||
continue;
|
||||
}
|
||||
*tp++ = '*';
|
||||
if (*fp == '*')
|
||||
++fp;
|
||||
while (isascii(*fp) && isdigit(*fp))
|
||||
*tp++ = *fp++;
|
||||
if (*fp == 'l' || *fp == 'h')
|
||||
*tp++ = *fp++;
|
||||
else if (*fp == '[')
|
||||
do *tp++ = *fp++;
|
||||
while (*fp != '\0' && *fp != ']');
|
||||
if ((*tp++ = *fp++) == '\0')
|
||||
break;
|
||||
}
|
||||
*(tp - 1) = '%';
|
||||
*tp++ = 'c';
|
||||
*tp = '\0';
|
||||
if (sscanf(string, fbuf, &dummy) != 1)
|
||||
result = format;
|
||||
free(fbuf);
|
||||
return result;
|
||||
}
|
388
commands/zoneinfo/solar87
Normal file
388
commands/zoneinfo/solar87
Normal file
|
@ -0,0 +1,388 @@
|
|||
# @(#)solar87 8.1
|
||||
|
||||
# So much for footnotes about Saudi Arabia.
|
||||
# Apparent noon times below are for Riyadh; your mileage will vary.
|
||||
# Times were computed using formulas in the U.S. Naval Observatory's
|
||||
# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
|
||||
# [plus or minus two] seconds during the current year."
|
||||
#
|
||||
# Rounding to the nearest five seconds results in fewer than
|
||||
# 256 different "time types"--a limit that's faced because time types are
|
||||
# stored on disk as unsigned chars.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule sol87 1987 only - Jan 1 12:03:20s -0:03:20 -
|
||||
Rule sol87 1987 only - Jan 2 12:03:50s -0:03:50 -
|
||||
Rule sol87 1987 only - Jan 3 12:04:15s -0:04:15 -
|
||||
Rule sol87 1987 only - Jan 4 12:04:45s -0:04:45 -
|
||||
Rule sol87 1987 only - Jan 5 12:05:10s -0:05:10 -
|
||||
Rule sol87 1987 only - Jan 6 12:05:40s -0:05:40 -
|
||||
Rule sol87 1987 only - Jan 7 12:06:05s -0:06:05 -
|
||||
Rule sol87 1987 only - Jan 8 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Jan 9 12:06:55s -0:06:55 -
|
||||
Rule sol87 1987 only - Jan 10 12:07:20s -0:07:20 -
|
||||
Rule sol87 1987 only - Jan 11 12:07:45s -0:07:45 -
|
||||
Rule sol87 1987 only - Jan 12 12:08:10s -0:08:10 -
|
||||
Rule sol87 1987 only - Jan 13 12:08:30s -0:08:30 -
|
||||
Rule sol87 1987 only - Jan 14 12:08:55s -0:08:55 -
|
||||
Rule sol87 1987 only - Jan 15 12:09:15s -0:09:15 -
|
||||
Rule sol87 1987 only - Jan 16 12:09:35s -0:09:35 -
|
||||
Rule sol87 1987 only - Jan 17 12:09:55s -0:09:55 -
|
||||
Rule sol87 1987 only - Jan 18 12:10:15s -0:10:15 -
|
||||
Rule sol87 1987 only - Jan 19 12:10:35s -0:10:35 -
|
||||
Rule sol87 1987 only - Jan 20 12:10:55s -0:10:55 -
|
||||
Rule sol87 1987 only - Jan 21 12:11:10s -0:11:10 -
|
||||
Rule sol87 1987 only - Jan 22 12:11:30s -0:11:30 -
|
||||
Rule sol87 1987 only - Jan 23 12:11:45s -0:11:45 -
|
||||
Rule sol87 1987 only - Jan 24 12:12:00s -0:12:00 -
|
||||
Rule sol87 1987 only - Jan 25 12:12:15s -0:12:15 -
|
||||
Rule sol87 1987 only - Jan 26 12:12:30s -0:12:30 -
|
||||
Rule sol87 1987 only - Jan 27 12:12:40s -0:12:40 -
|
||||
Rule sol87 1987 only - Jan 28 12:12:55s -0:12:55 -
|
||||
Rule sol87 1987 only - Jan 29 12:13:05s -0:13:05 -
|
||||
Rule sol87 1987 only - Jan 30 12:13:15s -0:13:15 -
|
||||
Rule sol87 1987 only - Jan 31 12:13:25s -0:13:25 -
|
||||
Rule sol87 1987 only - Feb 1 12:13:35s -0:13:35 -
|
||||
Rule sol87 1987 only - Feb 2 12:13:40s -0:13:40 -
|
||||
Rule sol87 1987 only - Feb 3 12:13:50s -0:13:50 -
|
||||
Rule sol87 1987 only - Feb 4 12:13:55s -0:13:55 -
|
||||
Rule sol87 1987 only - Feb 5 12:14:00s -0:14:00 -
|
||||
Rule sol87 1987 only - Feb 6 12:14:05s -0:14:05 -
|
||||
Rule sol87 1987 only - Feb 7 12:14:10s -0:14:10 -
|
||||
Rule sol87 1987 only - Feb 8 12:14:10s -0:14:10 -
|
||||
Rule sol87 1987 only - Feb 9 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 10 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 11 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 12 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 13 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 14 12:14:15s -0:14:15 -
|
||||
Rule sol87 1987 only - Feb 15 12:14:10s -0:14:10 -
|
||||
Rule sol87 1987 only - Feb 16 12:14:10s -0:14:10 -
|
||||
Rule sol87 1987 only - Feb 17 12:14:05s -0:14:05 -
|
||||
Rule sol87 1987 only - Feb 18 12:14:00s -0:14:00 -
|
||||
Rule sol87 1987 only - Feb 19 12:13:55s -0:13:55 -
|
||||
Rule sol87 1987 only - Feb 20 12:13:50s -0:13:50 -
|
||||
Rule sol87 1987 only - Feb 21 12:13:45s -0:13:45 -
|
||||
Rule sol87 1987 only - Feb 22 12:13:35s -0:13:35 -
|
||||
Rule sol87 1987 only - Feb 23 12:13:30s -0:13:30 -
|
||||
Rule sol87 1987 only - Feb 24 12:13:20s -0:13:20 -
|
||||
Rule sol87 1987 only - Feb 25 12:13:10s -0:13:10 -
|
||||
Rule sol87 1987 only - Feb 26 12:13:00s -0:13:00 -
|
||||
Rule sol87 1987 only - Feb 27 12:12:50s -0:12:50 -
|
||||
Rule sol87 1987 only - Feb 28 12:12:40s -0:12:40 -
|
||||
Rule sol87 1987 only - Mar 1 12:12:30s -0:12:30 -
|
||||
Rule sol87 1987 only - Mar 2 12:12:20s -0:12:20 -
|
||||
Rule sol87 1987 only - Mar 3 12:12:05s -0:12:05 -
|
||||
Rule sol87 1987 only - Mar 4 12:11:55s -0:11:55 -
|
||||
Rule sol87 1987 only - Mar 5 12:11:40s -0:11:40 -
|
||||
Rule sol87 1987 only - Mar 6 12:11:25s -0:11:25 -
|
||||
Rule sol87 1987 only - Mar 7 12:11:15s -0:11:15 -
|
||||
Rule sol87 1987 only - Mar 8 12:11:00s -0:11:00 -
|
||||
Rule sol87 1987 only - Mar 9 12:10:45s -0:10:45 -
|
||||
Rule sol87 1987 only - Mar 10 12:10:30s -0:10:30 -
|
||||
Rule sol87 1987 only - Mar 11 12:10:15s -0:10:15 -
|
||||
Rule sol87 1987 only - Mar 12 12:09:55s -0:09:55 -
|
||||
Rule sol87 1987 only - Mar 13 12:09:40s -0:09:40 -
|
||||
Rule sol87 1987 only - Mar 14 12:09:25s -0:09:25 -
|
||||
Rule sol87 1987 only - Mar 15 12:09:10s -0:09:10 -
|
||||
Rule sol87 1987 only - Mar 16 12:08:50s -0:08:50 -
|
||||
Rule sol87 1987 only - Mar 17 12:08:35s -0:08:35 -
|
||||
Rule sol87 1987 only - Mar 18 12:08:15s -0:08:15 -
|
||||
Rule sol87 1987 only - Mar 19 12:08:00s -0:08:00 -
|
||||
Rule sol87 1987 only - Mar 20 12:07:40s -0:07:40 -
|
||||
Rule sol87 1987 only - Mar 21 12:07:25s -0:07:25 -
|
||||
Rule sol87 1987 only - Mar 22 12:07:05s -0:07:05 -
|
||||
Rule sol87 1987 only - Mar 23 12:06:50s -0:06:50 -
|
||||
Rule sol87 1987 only - Mar 24 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Mar 25 12:06:10s -0:06:10 -
|
||||
Rule sol87 1987 only - Mar 26 12:05:55s -0:05:55 -
|
||||
Rule sol87 1987 only - Mar 27 12:05:35s -0:05:35 -
|
||||
Rule sol87 1987 only - Mar 28 12:05:15s -0:05:15 -
|
||||
Rule sol87 1987 only - Mar 29 12:05:00s -0:05:00 -
|
||||
Rule sol87 1987 only - Mar 30 12:04:40s -0:04:40 -
|
||||
Rule sol87 1987 only - Mar 31 12:04:25s -0:04:25 -
|
||||
Rule sol87 1987 only - Apr 1 12:04:05s -0:04:05 -
|
||||
Rule sol87 1987 only - Apr 2 12:03:45s -0:03:45 -
|
||||
Rule sol87 1987 only - Apr 3 12:03:30s -0:03:30 -
|
||||
Rule sol87 1987 only - Apr 4 12:03:10s -0:03:10 -
|
||||
Rule sol87 1987 only - Apr 5 12:02:55s -0:02:55 -
|
||||
Rule sol87 1987 only - Apr 6 12:02:35s -0:02:35 -
|
||||
Rule sol87 1987 only - Apr 7 12:02:20s -0:02:20 -
|
||||
Rule sol87 1987 only - Apr 8 12:02:05s -0:02:05 -
|
||||
Rule sol87 1987 only - Apr 9 12:01:45s -0:01:45 -
|
||||
Rule sol87 1987 only - Apr 10 12:01:30s -0:01:30 -
|
||||
Rule sol87 1987 only - Apr 11 12:01:15s -0:01:15 -
|
||||
Rule sol87 1987 only - Apr 12 12:00:55s -0:00:55 -
|
||||
Rule sol87 1987 only - Apr 13 12:00:40s -0:00:40 -
|
||||
Rule sol87 1987 only - Apr 14 12:00:25s -0:00:25 -
|
||||
Rule sol87 1987 only - Apr 15 12:00:10s -0:00:10 -
|
||||
Rule sol87 1987 only - Apr 16 11:59:55s 0:00:05 -
|
||||
Rule sol87 1987 only - Apr 17 11:59:45s 0:00:15 -
|
||||
Rule sol87 1987 only - Apr 18 11:59:30s 0:00:30 -
|
||||
Rule sol87 1987 only - Apr 19 11:59:15s 0:00:45 -
|
||||
Rule sol87 1987 only - Apr 20 11:59:05s 0:00:55 -
|
||||
Rule sol87 1987 only - Apr 21 11:58:50s 0:01:10 -
|
||||
Rule sol87 1987 only - Apr 22 11:58:40s 0:01:20 -
|
||||
Rule sol87 1987 only - Apr 23 11:58:25s 0:01:35 -
|
||||
Rule sol87 1987 only - Apr 24 11:58:15s 0:01:45 -
|
||||
Rule sol87 1987 only - Apr 25 11:58:05s 0:01:55 -
|
||||
Rule sol87 1987 only - Apr 26 11:57:55s 0:02:05 -
|
||||
Rule sol87 1987 only - Apr 27 11:57:45s 0:02:15 -
|
||||
Rule sol87 1987 only - Apr 28 11:57:35s 0:02:25 -
|
||||
Rule sol87 1987 only - Apr 29 11:57:25s 0:02:35 -
|
||||
Rule sol87 1987 only - Apr 30 11:57:15s 0:02:45 -
|
||||
Rule sol87 1987 only - May 1 11:57:10s 0:02:50 -
|
||||
Rule sol87 1987 only - May 2 11:57:00s 0:03:00 -
|
||||
Rule sol87 1987 only - May 3 11:56:55s 0:03:05 -
|
||||
Rule sol87 1987 only - May 4 11:56:50s 0:03:10 -
|
||||
Rule sol87 1987 only - May 5 11:56:45s 0:03:15 -
|
||||
Rule sol87 1987 only - May 6 11:56:40s 0:03:20 -
|
||||
Rule sol87 1987 only - May 7 11:56:35s 0:03:25 -
|
||||
Rule sol87 1987 only - May 8 11:56:30s 0:03:30 -
|
||||
Rule sol87 1987 only - May 9 11:56:25s 0:03:35 -
|
||||
Rule sol87 1987 only - May 10 11:56:25s 0:03:35 -
|
||||
Rule sol87 1987 only - May 11 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 12 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 13 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 14 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 15 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 16 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 17 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 18 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - May 19 11:56:25s 0:03:35 -
|
||||
Rule sol87 1987 only - May 20 11:56:25s 0:03:35 -
|
||||
Rule sol87 1987 only - May 21 11:56:30s 0:03:30 -
|
||||
Rule sol87 1987 only - May 22 11:56:35s 0:03:25 -
|
||||
Rule sol87 1987 only - May 23 11:56:40s 0:03:20 -
|
||||
Rule sol87 1987 only - May 24 11:56:45s 0:03:15 -
|
||||
Rule sol87 1987 only - May 25 11:56:50s 0:03:10 -
|
||||
Rule sol87 1987 only - May 26 11:56:55s 0:03:05 -
|
||||
Rule sol87 1987 only - May 27 11:57:00s 0:03:00 -
|
||||
Rule sol87 1987 only - May 28 11:57:10s 0:02:50 -
|
||||
Rule sol87 1987 only - May 29 11:57:15s 0:02:45 -
|
||||
Rule sol87 1987 only - May 30 11:57:25s 0:02:35 -
|
||||
Rule sol87 1987 only - May 31 11:57:30s 0:02:30 -
|
||||
Rule sol87 1987 only - Jun 1 11:57:40s 0:02:20 -
|
||||
Rule sol87 1987 only - Jun 2 11:57:50s 0:02:10 -
|
||||
Rule sol87 1987 only - Jun 3 11:58:00s 0:02:00 -
|
||||
Rule sol87 1987 only - Jun 4 11:58:10s 0:01:50 -
|
||||
Rule sol87 1987 only - Jun 5 11:58:20s 0:01:40 -
|
||||
Rule sol87 1987 only - Jun 6 11:58:30s 0:01:30 -
|
||||
Rule sol87 1987 only - Jun 7 11:58:40s 0:01:20 -
|
||||
Rule sol87 1987 only - Jun 8 11:58:50s 0:01:10 -
|
||||
Rule sol87 1987 only - Jun 9 11:59:05s 0:00:55 -
|
||||
Rule sol87 1987 only - Jun 10 11:59:15s 0:00:45 -
|
||||
Rule sol87 1987 only - Jun 11 11:59:30s 0:00:30 -
|
||||
Rule sol87 1987 only - Jun 12 11:59:40s 0:00:20 -
|
||||
Rule sol87 1987 only - Jun 13 11:59:50s 0:00:10 -
|
||||
Rule sol87 1987 only - Jun 14 12:00:05s -0:00:05 -
|
||||
Rule sol87 1987 only - Jun 15 12:00:15s -0:00:15 -
|
||||
Rule sol87 1987 only - Jun 16 12:00:30s -0:00:30 -
|
||||
Rule sol87 1987 only - Jun 17 12:00:45s -0:00:45 -
|
||||
Rule sol87 1987 only - Jun 18 12:00:55s -0:00:55 -
|
||||
Rule sol87 1987 only - Jun 19 12:01:10s -0:01:10 -
|
||||
Rule sol87 1987 only - Jun 20 12:01:20s -0:01:20 -
|
||||
Rule sol87 1987 only - Jun 21 12:01:35s -0:01:35 -
|
||||
Rule sol87 1987 only - Jun 22 12:01:50s -0:01:50 -
|
||||
Rule sol87 1987 only - Jun 23 12:02:00s -0:02:00 -
|
||||
Rule sol87 1987 only - Jun 24 12:02:15s -0:02:15 -
|
||||
Rule sol87 1987 only - Jun 25 12:02:25s -0:02:25 -
|
||||
Rule sol87 1987 only - Jun 26 12:02:40s -0:02:40 -
|
||||
Rule sol87 1987 only - Jun 27 12:02:50s -0:02:50 -
|
||||
Rule sol87 1987 only - Jun 28 12:03:05s -0:03:05 -
|
||||
Rule sol87 1987 only - Jun 29 12:03:15s -0:03:15 -
|
||||
Rule sol87 1987 only - Jun 30 12:03:30s -0:03:30 -
|
||||
Rule sol87 1987 only - Jul 1 12:03:40s -0:03:40 -
|
||||
Rule sol87 1987 only - Jul 2 12:03:50s -0:03:50 -
|
||||
Rule sol87 1987 only - Jul 3 12:04:05s -0:04:05 -
|
||||
Rule sol87 1987 only - Jul 4 12:04:15s -0:04:15 -
|
||||
Rule sol87 1987 only - Jul 5 12:04:25s -0:04:25 -
|
||||
Rule sol87 1987 only - Jul 6 12:04:35s -0:04:35 -
|
||||
Rule sol87 1987 only - Jul 7 12:04:45s -0:04:45 -
|
||||
Rule sol87 1987 only - Jul 8 12:04:55s -0:04:55 -
|
||||
Rule sol87 1987 only - Jul 9 12:05:05s -0:05:05 -
|
||||
Rule sol87 1987 only - Jul 10 12:05:15s -0:05:15 -
|
||||
Rule sol87 1987 only - Jul 11 12:05:20s -0:05:20 -
|
||||
Rule sol87 1987 only - Jul 12 12:05:30s -0:05:30 -
|
||||
Rule sol87 1987 only - Jul 13 12:05:40s -0:05:40 -
|
||||
Rule sol87 1987 only - Jul 14 12:05:45s -0:05:45 -
|
||||
Rule sol87 1987 only - Jul 15 12:05:50s -0:05:50 -
|
||||
Rule sol87 1987 only - Jul 16 12:06:00s -0:06:00 -
|
||||
Rule sol87 1987 only - Jul 17 12:06:05s -0:06:05 -
|
||||
Rule sol87 1987 only - Jul 18 12:06:10s -0:06:10 -
|
||||
Rule sol87 1987 only - Jul 19 12:06:15s -0:06:15 -
|
||||
Rule sol87 1987 only - Jul 20 12:06:15s -0:06:15 -
|
||||
Rule sol87 1987 only - Jul 21 12:06:20s -0:06:20 -
|
||||
Rule sol87 1987 only - Jul 22 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Jul 23 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Jul 24 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Jul 25 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Jul 26 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Jul 27 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Jul 28 12:06:30s -0:06:30 -
|
||||
Rule sol87 1987 only - Jul 29 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Jul 30 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Jul 31 12:06:25s -0:06:25 -
|
||||
Rule sol87 1987 only - Aug 1 12:06:20s -0:06:20 -
|
||||
Rule sol87 1987 only - Aug 2 12:06:15s -0:06:15 -
|
||||
Rule sol87 1987 only - Aug 3 12:06:10s -0:06:10 -
|
||||
Rule sol87 1987 only - Aug 4 12:06:05s -0:06:05 -
|
||||
Rule sol87 1987 only - Aug 5 12:06:00s -0:06:00 -
|
||||
Rule sol87 1987 only - Aug 6 12:05:55s -0:05:55 -
|
||||
Rule sol87 1987 only - Aug 7 12:05:50s -0:05:50 -
|
||||
Rule sol87 1987 only - Aug 8 12:05:40s -0:05:40 -
|
||||
Rule sol87 1987 only - Aug 9 12:05:35s -0:05:35 -
|
||||
Rule sol87 1987 only - Aug 10 12:05:25s -0:05:25 -
|
||||
Rule sol87 1987 only - Aug 11 12:05:15s -0:05:15 -
|
||||
Rule sol87 1987 only - Aug 12 12:05:05s -0:05:05 -
|
||||
Rule sol87 1987 only - Aug 13 12:04:55s -0:04:55 -
|
||||
Rule sol87 1987 only - Aug 14 12:04:45s -0:04:45 -
|
||||
Rule sol87 1987 only - Aug 15 12:04:35s -0:04:35 -
|
||||
Rule sol87 1987 only - Aug 16 12:04:25s -0:04:25 -
|
||||
Rule sol87 1987 only - Aug 17 12:04:10s -0:04:10 -
|
||||
Rule sol87 1987 only - Aug 18 12:04:00s -0:04:00 -
|
||||
Rule sol87 1987 only - Aug 19 12:03:45s -0:03:45 -
|
||||
Rule sol87 1987 only - Aug 20 12:03:30s -0:03:30 -
|
||||
Rule sol87 1987 only - Aug 21 12:03:15s -0:03:15 -
|
||||
Rule sol87 1987 only - Aug 22 12:03:00s -0:03:00 -
|
||||
Rule sol87 1987 only - Aug 23 12:02:45s -0:02:45 -
|
||||
Rule sol87 1987 only - Aug 24 12:02:30s -0:02:30 -
|
||||
Rule sol87 1987 only - Aug 25 12:02:15s -0:02:15 -
|
||||
Rule sol87 1987 only - Aug 26 12:02:00s -0:02:00 -
|
||||
Rule sol87 1987 only - Aug 27 12:01:40s -0:01:40 -
|
||||
Rule sol87 1987 only - Aug 28 12:01:25s -0:01:25 -
|
||||
Rule sol87 1987 only - Aug 29 12:01:05s -0:01:05 -
|
||||
Rule sol87 1987 only - Aug 30 12:00:50s -0:00:50 -
|
||||
Rule sol87 1987 only - Aug 31 12:00:30s -0:00:30 -
|
||||
Rule sol87 1987 only - Sep 1 12:00:10s -0:00:10 -
|
||||
Rule sol87 1987 only - Sep 2 11:59:50s 0:00:10 -
|
||||
Rule sol87 1987 only - Sep 3 11:59:35s 0:00:25 -
|
||||
Rule sol87 1987 only - Sep 4 11:59:15s 0:00:45 -
|
||||
Rule sol87 1987 only - Sep 5 11:58:55s 0:01:05 -
|
||||
Rule sol87 1987 only - Sep 6 11:58:35s 0:01:25 -
|
||||
Rule sol87 1987 only - Sep 7 11:58:15s 0:01:45 -
|
||||
Rule sol87 1987 only - Sep 8 11:57:55s 0:02:05 -
|
||||
Rule sol87 1987 only - Sep 9 11:57:30s 0:02:30 -
|
||||
Rule sol87 1987 only - Sep 10 11:57:10s 0:02:50 -
|
||||
Rule sol87 1987 only - Sep 11 11:56:50s 0:03:10 -
|
||||
Rule sol87 1987 only - Sep 12 11:56:30s 0:03:30 -
|
||||
Rule sol87 1987 only - Sep 13 11:56:10s 0:03:50 -
|
||||
Rule sol87 1987 only - Sep 14 11:55:45s 0:04:15 -
|
||||
Rule sol87 1987 only - Sep 15 11:55:25s 0:04:35 -
|
||||
Rule sol87 1987 only - Sep 16 11:55:05s 0:04:55 -
|
||||
Rule sol87 1987 only - Sep 17 11:54:45s 0:05:15 -
|
||||
Rule sol87 1987 only - Sep 18 11:54:20s 0:05:40 -
|
||||
Rule sol87 1987 only - Sep 19 11:54:00s 0:06:00 -
|
||||
Rule sol87 1987 only - Sep 20 11:53:40s 0:06:20 -
|
||||
Rule sol87 1987 only - Sep 21 11:53:15s 0:06:45 -
|
||||
Rule sol87 1987 only - Sep 22 11:52:55s 0:07:05 -
|
||||
Rule sol87 1987 only - Sep 23 11:52:35s 0:07:25 -
|
||||
Rule sol87 1987 only - Sep 24 11:52:15s 0:07:45 -
|
||||
Rule sol87 1987 only - Sep 25 11:51:55s 0:08:05 -
|
||||
Rule sol87 1987 only - Sep 26 11:51:35s 0:08:25 -
|
||||
Rule sol87 1987 only - Sep 27 11:51:10s 0:08:50 -
|
||||
Rule sol87 1987 only - Sep 28 11:50:50s 0:09:10 -
|
||||
Rule sol87 1987 only - Sep 29 11:50:30s 0:09:30 -
|
||||
Rule sol87 1987 only - Sep 30 11:50:10s 0:09:50 -
|
||||
Rule sol87 1987 only - Oct 1 11:49:50s 0:10:10 -
|
||||
Rule sol87 1987 only - Oct 2 11:49:35s 0:10:25 -
|
||||
Rule sol87 1987 only - Oct 3 11:49:15s 0:10:45 -
|
||||
Rule sol87 1987 only - Oct 4 11:48:55s 0:11:05 -
|
||||
Rule sol87 1987 only - Oct 5 11:48:35s 0:11:25 -
|
||||
Rule sol87 1987 only - Oct 6 11:48:20s 0:11:40 -
|
||||
Rule sol87 1987 only - Oct 7 11:48:00s 0:12:00 -
|
||||
Rule sol87 1987 only - Oct 8 11:47:45s 0:12:15 -
|
||||
Rule sol87 1987 only - Oct 9 11:47:25s 0:12:35 -
|
||||
Rule sol87 1987 only - Oct 10 11:47:10s 0:12:50 -
|
||||
Rule sol87 1987 only - Oct 11 11:46:55s 0:13:05 -
|
||||
Rule sol87 1987 only - Oct 12 11:46:40s 0:13:20 -
|
||||
Rule sol87 1987 only - Oct 13 11:46:25s 0:13:35 -
|
||||
Rule sol87 1987 only - Oct 14 11:46:10s 0:13:50 -
|
||||
Rule sol87 1987 only - Oct 15 11:45:55s 0:14:05 -
|
||||
Rule sol87 1987 only - Oct 16 11:45:45s 0:14:15 -
|
||||
Rule sol87 1987 only - Oct 17 11:45:30s 0:14:30 -
|
||||
Rule sol87 1987 only - Oct 18 11:45:20s 0:14:40 -
|
||||
Rule sol87 1987 only - Oct 19 11:45:05s 0:14:55 -
|
||||
Rule sol87 1987 only - Oct 20 11:44:55s 0:15:05 -
|
||||
Rule sol87 1987 only - Oct 21 11:44:45s 0:15:15 -
|
||||
Rule sol87 1987 only - Oct 22 11:44:35s 0:15:25 -
|
||||
Rule sol87 1987 only - Oct 23 11:44:25s 0:15:35 -
|
||||
Rule sol87 1987 only - Oct 24 11:44:20s 0:15:40 -
|
||||
Rule sol87 1987 only - Oct 25 11:44:10s 0:15:50 -
|
||||
Rule sol87 1987 only - Oct 26 11:44:05s 0:15:55 -
|
||||
Rule sol87 1987 only - Oct 27 11:43:55s 0:16:05 -
|
||||
Rule sol87 1987 only - Oct 28 11:43:50s 0:16:10 -
|
||||
Rule sol87 1987 only - Oct 29 11:43:45s 0:16:15 -
|
||||
Rule sol87 1987 only - Oct 30 11:43:45s 0:16:15 -
|
||||
Rule sol87 1987 only - Oct 31 11:43:40s 0:16:20 -
|
||||
Rule sol87 1987 only - Nov 1 11:43:40s 0:16:20 -
|
||||
Rule sol87 1987 only - Nov 2 11:43:35s 0:16:25 -
|
||||
Rule sol87 1987 only - Nov 3 11:43:35s 0:16:25 -
|
||||
Rule sol87 1987 only - Nov 4 11:43:35s 0:16:25 -
|
||||
Rule sol87 1987 only - Nov 5 11:43:35s 0:16:25 -
|
||||
Rule sol87 1987 only - Nov 6 11:43:40s 0:16:20 -
|
||||
Rule sol87 1987 only - Nov 7 11:43:40s 0:16:20 -
|
||||
Rule sol87 1987 only - Nov 8 11:43:45s 0:16:15 -
|
||||
Rule sol87 1987 only - Nov 9 11:43:50s 0:16:10 -
|
||||
Rule sol87 1987 only - Nov 10 11:43:55s 0:16:05 -
|
||||
Rule sol87 1987 only - Nov 11 11:44:00s 0:16:00 -
|
||||
Rule sol87 1987 only - Nov 12 11:44:05s 0:15:55 -
|
||||
Rule sol87 1987 only - Nov 13 11:44:15s 0:15:45 -
|
||||
Rule sol87 1987 only - Nov 14 11:44:20s 0:15:40 -
|
||||
Rule sol87 1987 only - Nov 15 11:44:30s 0:15:30 -
|
||||
Rule sol87 1987 only - Nov 16 11:44:40s 0:15:20 -
|
||||
Rule sol87 1987 only - Nov 17 11:44:50s 0:15:10 -
|
||||
Rule sol87 1987 only - Nov 18 11:45:05s 0:14:55 -
|
||||
Rule sol87 1987 only - Nov 19 11:45:15s 0:14:45 -
|
||||
Rule sol87 1987 only - Nov 20 11:45:30s 0:14:30 -
|
||||
Rule sol87 1987 only - Nov 21 11:45:45s 0:14:15 -
|
||||
Rule sol87 1987 only - Nov 22 11:46:00s 0:14:00 -
|
||||
Rule sol87 1987 only - Nov 23 11:46:15s 0:13:45 -
|
||||
Rule sol87 1987 only - Nov 24 11:46:30s 0:13:30 -
|
||||
Rule sol87 1987 only - Nov 25 11:46:50s 0:13:10 -
|
||||
Rule sol87 1987 only - Nov 26 11:47:10s 0:12:50 -
|
||||
Rule sol87 1987 only - Nov 27 11:47:25s 0:12:35 -
|
||||
Rule sol87 1987 only - Nov 28 11:47:45s 0:12:15 -
|
||||
Rule sol87 1987 only - Nov 29 11:48:05s 0:11:55 -
|
||||
Rule sol87 1987 only - Nov 30 11:48:30s 0:11:30 -
|
||||
Rule sol87 1987 only - Dec 1 11:48:50s 0:11:10 -
|
||||
Rule sol87 1987 only - Dec 2 11:49:10s 0:10:50 -
|
||||
Rule sol87 1987 only - Dec 3 11:49:35s 0:10:25 -
|
||||
Rule sol87 1987 only - Dec 4 11:50:00s 0:10:00 -
|
||||
Rule sol87 1987 only - Dec 5 11:50:25s 0:09:35 -
|
||||
Rule sol87 1987 only - Dec 6 11:50:50s 0:09:10 -
|
||||
Rule sol87 1987 only - Dec 7 11:51:15s 0:08:45 -
|
||||
Rule sol87 1987 only - Dec 8 11:51:40s 0:08:20 -
|
||||
Rule sol87 1987 only - Dec 9 11:52:05s 0:07:55 -
|
||||
Rule sol87 1987 only - Dec 10 11:52:30s 0:07:30 -
|
||||
Rule sol87 1987 only - Dec 11 11:53:00s 0:07:00 -
|
||||
Rule sol87 1987 only - Dec 12 11:53:25s 0:06:35 -
|
||||
Rule sol87 1987 only - Dec 13 11:53:55s 0:06:05 -
|
||||
Rule sol87 1987 only - Dec 14 11:54:25s 0:05:35 -
|
||||
Rule sol87 1987 only - Dec 15 11:54:50s 0:05:10 -
|
||||
Rule sol87 1987 only - Dec 16 11:55:20s 0:04:40 -
|
||||
Rule sol87 1987 only - Dec 17 11:55:50s 0:04:10 -
|
||||
Rule sol87 1987 only - Dec 18 11:56:20s 0:03:40 -
|
||||
Rule sol87 1987 only - Dec 19 11:56:50s 0:03:10 -
|
||||
Rule sol87 1987 only - Dec 20 11:57:20s 0:02:40 -
|
||||
Rule sol87 1987 only - Dec 21 11:57:50s 0:02:10 -
|
||||
Rule sol87 1987 only - Dec 22 11:58:20s 0:01:40 -
|
||||
Rule sol87 1987 only - Dec 23 11:58:50s 0:01:10 -
|
||||
Rule sol87 1987 only - Dec 24 11:59:20s 0:00:40 -
|
||||
Rule sol87 1987 only - Dec 25 11:59:50s 0:00:10 -
|
||||
Rule sol87 1987 only - Dec 26 12:00:20s -0:00:20 -
|
||||
Rule sol87 1987 only - Dec 27 12:00:45s -0:00:45 -
|
||||
Rule sol87 1987 only - Dec 28 12:01:15s -0:01:15 -
|
||||
Rule sol87 1987 only - Dec 29 12:01:45s -0:01:45 -
|
||||
Rule sol87 1987 only - Dec 30 12:02:15s -0:02:15 -
|
||||
Rule sol87 1987 only - Dec 31 12:02:45s -0:02:45 -
|
||||
|
||||
# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
|
||||
# Before and after 1987, we'll operate on local mean solar time.
|
||||
|
||||
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
Zone Asia/Riyadh87 3:07:04 - zzz 1987
|
||||
3:07:04 sol87 zzz 1988
|
||||
3:07:04 - zzz
|
||||
# For backward compatibility...
|
||||
Link Asia/Riyadh87 Mideast/Riyadh87
|
388
commands/zoneinfo/solar88
Normal file
388
commands/zoneinfo/solar88
Normal file
|
@ -0,0 +1,388 @@
|
|||
# @(#)solar88 8.1
|
||||
|
||||
# Apparent noon times below are for Riyadh; they're a bit off for other places.
|
||||
# Times were computed using formulas in the U.S. Naval Observatory's
|
||||
# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
|
||||
# [plus or minus two] seconds during the current year."
|
||||
#
|
||||
# Rounding to the nearest five seconds results in fewer than
|
||||
# 256 different "time types"--a limit that's faced because time types are
|
||||
# stored on disk as unsigned chars.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule sol88 1988 only - Jan 1 12:03:15s -0:03:15 -
|
||||
Rule sol88 1988 only - Jan 2 12:03:40s -0:03:40 -
|
||||
Rule sol88 1988 only - Jan 3 12:04:10s -0:04:10 -
|
||||
Rule sol88 1988 only - Jan 4 12:04:40s -0:04:40 -
|
||||
Rule sol88 1988 only - Jan 5 12:05:05s -0:05:05 -
|
||||
Rule sol88 1988 only - Jan 6 12:05:30s -0:05:30 -
|
||||
Rule sol88 1988 only - Jan 7 12:06:00s -0:06:00 -
|
||||
Rule sol88 1988 only - Jan 8 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jan 9 12:06:50s -0:06:50 -
|
||||
Rule sol88 1988 only - Jan 10 12:07:15s -0:07:15 -
|
||||
Rule sol88 1988 only - Jan 11 12:07:40s -0:07:40 -
|
||||
Rule sol88 1988 only - Jan 12 12:08:05s -0:08:05 -
|
||||
Rule sol88 1988 only - Jan 13 12:08:25s -0:08:25 -
|
||||
Rule sol88 1988 only - Jan 14 12:08:50s -0:08:50 -
|
||||
Rule sol88 1988 only - Jan 15 12:09:10s -0:09:10 -
|
||||
Rule sol88 1988 only - Jan 16 12:09:30s -0:09:30 -
|
||||
Rule sol88 1988 only - Jan 17 12:09:50s -0:09:50 -
|
||||
Rule sol88 1988 only - Jan 18 12:10:10s -0:10:10 -
|
||||
Rule sol88 1988 only - Jan 19 12:10:30s -0:10:30 -
|
||||
Rule sol88 1988 only - Jan 20 12:10:50s -0:10:50 -
|
||||
Rule sol88 1988 only - Jan 21 12:11:05s -0:11:05 -
|
||||
Rule sol88 1988 only - Jan 22 12:11:25s -0:11:25 -
|
||||
Rule sol88 1988 only - Jan 23 12:11:40s -0:11:40 -
|
||||
Rule sol88 1988 only - Jan 24 12:11:55s -0:11:55 -
|
||||
Rule sol88 1988 only - Jan 25 12:12:10s -0:12:10 -
|
||||
Rule sol88 1988 only - Jan 26 12:12:25s -0:12:25 -
|
||||
Rule sol88 1988 only - Jan 27 12:12:40s -0:12:40 -
|
||||
Rule sol88 1988 only - Jan 28 12:12:50s -0:12:50 -
|
||||
Rule sol88 1988 only - Jan 29 12:13:00s -0:13:00 -
|
||||
Rule sol88 1988 only - Jan 30 12:13:10s -0:13:10 -
|
||||
Rule sol88 1988 only - Jan 31 12:13:20s -0:13:20 -
|
||||
Rule sol88 1988 only - Feb 1 12:13:30s -0:13:30 -
|
||||
Rule sol88 1988 only - Feb 2 12:13:40s -0:13:40 -
|
||||
Rule sol88 1988 only - Feb 3 12:13:45s -0:13:45 -
|
||||
Rule sol88 1988 only - Feb 4 12:13:55s -0:13:55 -
|
||||
Rule sol88 1988 only - Feb 5 12:14:00s -0:14:00 -
|
||||
Rule sol88 1988 only - Feb 6 12:14:05s -0:14:05 -
|
||||
Rule sol88 1988 only - Feb 7 12:14:10s -0:14:10 -
|
||||
Rule sol88 1988 only - Feb 8 12:14:10s -0:14:10 -
|
||||
Rule sol88 1988 only - Feb 9 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 10 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 11 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 12 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 13 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 14 12:14:15s -0:14:15 -
|
||||
Rule sol88 1988 only - Feb 15 12:14:10s -0:14:10 -
|
||||
Rule sol88 1988 only - Feb 16 12:14:10s -0:14:10 -
|
||||
Rule sol88 1988 only - Feb 17 12:14:05s -0:14:05 -
|
||||
Rule sol88 1988 only - Feb 18 12:14:00s -0:14:00 -
|
||||
Rule sol88 1988 only - Feb 19 12:13:55s -0:13:55 -
|
||||
Rule sol88 1988 only - Feb 20 12:13:50s -0:13:50 -
|
||||
Rule sol88 1988 only - Feb 21 12:13:45s -0:13:45 -
|
||||
Rule sol88 1988 only - Feb 22 12:13:40s -0:13:40 -
|
||||
Rule sol88 1988 only - Feb 23 12:13:30s -0:13:30 -
|
||||
Rule sol88 1988 only - Feb 24 12:13:20s -0:13:20 -
|
||||
Rule sol88 1988 only - Feb 25 12:13:15s -0:13:15 -
|
||||
Rule sol88 1988 only - Feb 26 12:13:05s -0:13:05 -
|
||||
Rule sol88 1988 only - Feb 27 12:12:55s -0:12:55 -
|
||||
Rule sol88 1988 only - Feb 28 12:12:45s -0:12:45 -
|
||||
Rule sol88 1988 only - Feb 29 12:12:30s -0:12:30 -
|
||||
Rule sol88 1988 only - Mar 1 12:12:20s -0:12:20 -
|
||||
Rule sol88 1988 only - Mar 2 12:12:10s -0:12:10 -
|
||||
Rule sol88 1988 only - Mar 3 12:11:55s -0:11:55 -
|
||||
Rule sol88 1988 only - Mar 4 12:11:45s -0:11:45 -
|
||||
Rule sol88 1988 only - Mar 5 12:11:30s -0:11:30 -
|
||||
Rule sol88 1988 only - Mar 6 12:11:15s -0:11:15 -
|
||||
Rule sol88 1988 only - Mar 7 12:11:00s -0:11:00 -
|
||||
Rule sol88 1988 only - Mar 8 12:10:45s -0:10:45 -
|
||||
Rule sol88 1988 only - Mar 9 12:10:30s -0:10:30 -
|
||||
Rule sol88 1988 only - Mar 10 12:10:15s -0:10:15 -
|
||||
Rule sol88 1988 only - Mar 11 12:10:00s -0:10:00 -
|
||||
Rule sol88 1988 only - Mar 12 12:09:45s -0:09:45 -
|
||||
Rule sol88 1988 only - Mar 13 12:09:30s -0:09:30 -
|
||||
Rule sol88 1988 only - Mar 14 12:09:10s -0:09:10 -
|
||||
Rule sol88 1988 only - Mar 15 12:08:55s -0:08:55 -
|
||||
Rule sol88 1988 only - Mar 16 12:08:40s -0:08:40 -
|
||||
Rule sol88 1988 only - Mar 17 12:08:20s -0:08:20 -
|
||||
Rule sol88 1988 only - Mar 18 12:08:05s -0:08:05 -
|
||||
Rule sol88 1988 only - Mar 19 12:07:45s -0:07:45 -
|
||||
Rule sol88 1988 only - Mar 20 12:07:30s -0:07:30 -
|
||||
Rule sol88 1988 only - Mar 21 12:07:10s -0:07:10 -
|
||||
Rule sol88 1988 only - Mar 22 12:06:50s -0:06:50 -
|
||||
Rule sol88 1988 only - Mar 23 12:06:35s -0:06:35 -
|
||||
Rule sol88 1988 only - Mar 24 12:06:15s -0:06:15 -
|
||||
Rule sol88 1988 only - Mar 25 12:06:00s -0:06:00 -
|
||||
Rule sol88 1988 only - Mar 26 12:05:40s -0:05:40 -
|
||||
Rule sol88 1988 only - Mar 27 12:05:20s -0:05:20 -
|
||||
Rule sol88 1988 only - Mar 28 12:05:05s -0:05:05 -
|
||||
Rule sol88 1988 only - Mar 29 12:04:45s -0:04:45 -
|
||||
Rule sol88 1988 only - Mar 30 12:04:25s -0:04:25 -
|
||||
Rule sol88 1988 only - Mar 31 12:04:10s -0:04:10 -
|
||||
Rule sol88 1988 only - Apr 1 12:03:50s -0:03:50 -
|
||||
Rule sol88 1988 only - Apr 2 12:03:35s -0:03:35 -
|
||||
Rule sol88 1988 only - Apr 3 12:03:15s -0:03:15 -
|
||||
Rule sol88 1988 only - Apr 4 12:03:00s -0:03:00 -
|
||||
Rule sol88 1988 only - Apr 5 12:02:40s -0:02:40 -
|
||||
Rule sol88 1988 only - Apr 6 12:02:25s -0:02:25 -
|
||||
Rule sol88 1988 only - Apr 7 12:02:05s -0:02:05 -
|
||||
Rule sol88 1988 only - Apr 8 12:01:50s -0:01:50 -
|
||||
Rule sol88 1988 only - Apr 9 12:01:35s -0:01:35 -
|
||||
Rule sol88 1988 only - Apr 10 12:01:15s -0:01:15 -
|
||||
Rule sol88 1988 only - Apr 11 12:01:00s -0:01:00 -
|
||||
Rule sol88 1988 only - Apr 12 12:00:45s -0:00:45 -
|
||||
Rule sol88 1988 only - Apr 13 12:00:30s -0:00:30 -
|
||||
Rule sol88 1988 only - Apr 14 12:00:15s -0:00:15 -
|
||||
Rule sol88 1988 only - Apr 15 12:00:00s 0:00:00 -
|
||||
Rule sol88 1988 only - Apr 16 11:59:45s 0:00:15 -
|
||||
Rule sol88 1988 only - Apr 17 11:59:30s 0:00:30 -
|
||||
Rule sol88 1988 only - Apr 18 11:59:20s 0:00:40 -
|
||||
Rule sol88 1988 only - Apr 19 11:59:05s 0:00:55 -
|
||||
Rule sol88 1988 only - Apr 20 11:58:55s 0:01:05 -
|
||||
Rule sol88 1988 only - Apr 21 11:58:40s 0:01:20 -
|
||||
Rule sol88 1988 only - Apr 22 11:58:30s 0:01:30 -
|
||||
Rule sol88 1988 only - Apr 23 11:58:15s 0:01:45 -
|
||||
Rule sol88 1988 only - Apr 24 11:58:05s 0:01:55 -
|
||||
Rule sol88 1988 only - Apr 25 11:57:55s 0:02:05 -
|
||||
Rule sol88 1988 only - Apr 26 11:57:45s 0:02:15 -
|
||||
Rule sol88 1988 only - Apr 27 11:57:35s 0:02:25 -
|
||||
Rule sol88 1988 only - Apr 28 11:57:30s 0:02:30 -
|
||||
Rule sol88 1988 only - Apr 29 11:57:20s 0:02:40 -
|
||||
Rule sol88 1988 only - Apr 30 11:57:10s 0:02:50 -
|
||||
Rule sol88 1988 only - May 1 11:57:05s 0:02:55 -
|
||||
Rule sol88 1988 only - May 2 11:56:55s 0:03:05 -
|
||||
Rule sol88 1988 only - May 3 11:56:50s 0:03:10 -
|
||||
Rule sol88 1988 only - May 4 11:56:45s 0:03:15 -
|
||||
Rule sol88 1988 only - May 5 11:56:40s 0:03:20 -
|
||||
Rule sol88 1988 only - May 6 11:56:35s 0:03:25 -
|
||||
Rule sol88 1988 only - May 7 11:56:30s 0:03:30 -
|
||||
Rule sol88 1988 only - May 8 11:56:25s 0:03:35 -
|
||||
Rule sol88 1988 only - May 9 11:56:25s 0:03:35 -
|
||||
Rule sol88 1988 only - May 10 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 11 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 12 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 13 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 14 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 15 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 16 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 17 11:56:20s 0:03:40 -
|
||||
Rule sol88 1988 only - May 18 11:56:25s 0:03:35 -
|
||||
Rule sol88 1988 only - May 19 11:56:25s 0:03:35 -
|
||||
Rule sol88 1988 only - May 20 11:56:30s 0:03:30 -
|
||||
Rule sol88 1988 only - May 21 11:56:35s 0:03:25 -
|
||||
Rule sol88 1988 only - May 22 11:56:40s 0:03:20 -
|
||||
Rule sol88 1988 only - May 23 11:56:45s 0:03:15 -
|
||||
Rule sol88 1988 only - May 24 11:56:50s 0:03:10 -
|
||||
Rule sol88 1988 only - May 25 11:56:55s 0:03:05 -
|
||||
Rule sol88 1988 only - May 26 11:57:00s 0:03:00 -
|
||||
Rule sol88 1988 only - May 27 11:57:05s 0:02:55 -
|
||||
Rule sol88 1988 only - May 28 11:57:15s 0:02:45 -
|
||||
Rule sol88 1988 only - May 29 11:57:20s 0:02:40 -
|
||||
Rule sol88 1988 only - May 30 11:57:30s 0:02:30 -
|
||||
Rule sol88 1988 only - May 31 11:57:40s 0:02:20 -
|
||||
Rule sol88 1988 only - Jun 1 11:57:50s 0:02:10 -
|
||||
Rule sol88 1988 only - Jun 2 11:57:55s 0:02:05 -
|
||||
Rule sol88 1988 only - Jun 3 11:58:05s 0:01:55 -
|
||||
Rule sol88 1988 only - Jun 4 11:58:15s 0:01:45 -
|
||||
Rule sol88 1988 only - Jun 5 11:58:30s 0:01:30 -
|
||||
Rule sol88 1988 only - Jun 6 11:58:40s 0:01:20 -
|
||||
Rule sol88 1988 only - Jun 7 11:58:50s 0:01:10 -
|
||||
Rule sol88 1988 only - Jun 8 11:59:00s 0:01:00 -
|
||||
Rule sol88 1988 only - Jun 9 11:59:15s 0:00:45 -
|
||||
Rule sol88 1988 only - Jun 10 11:59:25s 0:00:35 -
|
||||
Rule sol88 1988 only - Jun 11 11:59:35s 0:00:25 -
|
||||
Rule sol88 1988 only - Jun 12 11:59:50s 0:00:10 -
|
||||
Rule sol88 1988 only - Jun 13 12:00:00s 0:00:00 -
|
||||
Rule sol88 1988 only - Jun 14 12:00:15s -0:00:15 -
|
||||
Rule sol88 1988 only - Jun 15 12:00:25s -0:00:25 -
|
||||
Rule sol88 1988 only - Jun 16 12:00:40s -0:00:40 -
|
||||
Rule sol88 1988 only - Jun 17 12:00:55s -0:00:55 -
|
||||
Rule sol88 1988 only - Jun 18 12:01:05s -0:01:05 -
|
||||
Rule sol88 1988 only - Jun 19 12:01:20s -0:01:20 -
|
||||
Rule sol88 1988 only - Jun 20 12:01:30s -0:01:30 -
|
||||
Rule sol88 1988 only - Jun 21 12:01:45s -0:01:45 -
|
||||
Rule sol88 1988 only - Jun 22 12:02:00s -0:02:00 -
|
||||
Rule sol88 1988 only - Jun 23 12:02:10s -0:02:10 -
|
||||
Rule sol88 1988 only - Jun 24 12:02:25s -0:02:25 -
|
||||
Rule sol88 1988 only - Jun 25 12:02:35s -0:02:35 -
|
||||
Rule sol88 1988 only - Jun 26 12:02:50s -0:02:50 -
|
||||
Rule sol88 1988 only - Jun 27 12:03:00s -0:03:00 -
|
||||
Rule sol88 1988 only - Jun 28 12:03:15s -0:03:15 -
|
||||
Rule sol88 1988 only - Jun 29 12:03:25s -0:03:25 -
|
||||
Rule sol88 1988 only - Jun 30 12:03:40s -0:03:40 -
|
||||
Rule sol88 1988 only - Jul 1 12:03:50s -0:03:50 -
|
||||
Rule sol88 1988 only - Jul 2 12:04:00s -0:04:00 -
|
||||
Rule sol88 1988 only - Jul 3 12:04:10s -0:04:10 -
|
||||
Rule sol88 1988 only - Jul 4 12:04:25s -0:04:25 -
|
||||
Rule sol88 1988 only - Jul 5 12:04:35s -0:04:35 -
|
||||
Rule sol88 1988 only - Jul 6 12:04:45s -0:04:45 -
|
||||
Rule sol88 1988 only - Jul 7 12:04:55s -0:04:55 -
|
||||
Rule sol88 1988 only - Jul 8 12:05:05s -0:05:05 -
|
||||
Rule sol88 1988 only - Jul 9 12:05:10s -0:05:10 -
|
||||
Rule sol88 1988 only - Jul 10 12:05:20s -0:05:20 -
|
||||
Rule sol88 1988 only - Jul 11 12:05:30s -0:05:30 -
|
||||
Rule sol88 1988 only - Jul 12 12:05:35s -0:05:35 -
|
||||
Rule sol88 1988 only - Jul 13 12:05:45s -0:05:45 -
|
||||
Rule sol88 1988 only - Jul 14 12:05:50s -0:05:50 -
|
||||
Rule sol88 1988 only - Jul 15 12:05:55s -0:05:55 -
|
||||
Rule sol88 1988 only - Jul 16 12:06:00s -0:06:00 -
|
||||
Rule sol88 1988 only - Jul 17 12:06:05s -0:06:05 -
|
||||
Rule sol88 1988 only - Jul 18 12:06:10s -0:06:10 -
|
||||
Rule sol88 1988 only - Jul 19 12:06:15s -0:06:15 -
|
||||
Rule sol88 1988 only - Jul 20 12:06:20s -0:06:20 -
|
||||
Rule sol88 1988 only - Jul 21 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jul 22 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jul 23 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jul 24 12:06:30s -0:06:30 -
|
||||
Rule sol88 1988 only - Jul 25 12:06:30s -0:06:30 -
|
||||
Rule sol88 1988 only - Jul 26 12:06:30s -0:06:30 -
|
||||
Rule sol88 1988 only - Jul 27 12:06:30s -0:06:30 -
|
||||
Rule sol88 1988 only - Jul 28 12:06:30s -0:06:30 -
|
||||
Rule sol88 1988 only - Jul 29 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jul 30 12:06:25s -0:06:25 -
|
||||
Rule sol88 1988 only - Jul 31 12:06:20s -0:06:20 -
|
||||
Rule sol88 1988 only - Aug 1 12:06:15s -0:06:15 -
|
||||
Rule sol88 1988 only - Aug 2 12:06:15s -0:06:15 -
|
||||
Rule sol88 1988 only - Aug 3 12:06:10s -0:06:10 -
|
||||
Rule sol88 1988 only - Aug 4 12:06:05s -0:06:05 -
|
||||
Rule sol88 1988 only - Aug 5 12:05:55s -0:05:55 -
|
||||
Rule sol88 1988 only - Aug 6 12:05:50s -0:05:50 -
|
||||
Rule sol88 1988 only - Aug 7 12:05:45s -0:05:45 -
|
||||
Rule sol88 1988 only - Aug 8 12:05:35s -0:05:35 -
|
||||
Rule sol88 1988 only - Aug 9 12:05:25s -0:05:25 -
|
||||
Rule sol88 1988 only - Aug 10 12:05:20s -0:05:20 -
|
||||
Rule sol88 1988 only - Aug 11 12:05:10s -0:05:10 -
|
||||
Rule sol88 1988 only - Aug 12 12:05:00s -0:05:00 -
|
||||
Rule sol88 1988 only - Aug 13 12:04:50s -0:04:50 -
|
||||
Rule sol88 1988 only - Aug 14 12:04:35s -0:04:35 -
|
||||
Rule sol88 1988 only - Aug 15 12:04:25s -0:04:25 -
|
||||
Rule sol88 1988 only - Aug 16 12:04:15s -0:04:15 -
|
||||
Rule sol88 1988 only - Aug 17 12:04:00s -0:04:00 -
|
||||
Rule sol88 1988 only - Aug 18 12:03:50s -0:03:50 -
|
||||
Rule sol88 1988 only - Aug 19 12:03:35s -0:03:35 -
|
||||
Rule sol88 1988 only - Aug 20 12:03:20s -0:03:20 -
|
||||
Rule sol88 1988 only - Aug 21 12:03:05s -0:03:05 -
|
||||
Rule sol88 1988 only - Aug 22 12:02:50s -0:02:50 -
|
||||
Rule sol88 1988 only - Aug 23 12:02:35s -0:02:35 -
|
||||
Rule sol88 1988 only - Aug 24 12:02:20s -0:02:20 -
|
||||
Rule sol88 1988 only - Aug 25 12:02:00s -0:02:00 -
|
||||
Rule sol88 1988 only - Aug 26 12:01:45s -0:01:45 -
|
||||
Rule sol88 1988 only - Aug 27 12:01:30s -0:01:30 -
|
||||
Rule sol88 1988 only - Aug 28 12:01:10s -0:01:10 -
|
||||
Rule sol88 1988 only - Aug 29 12:00:50s -0:00:50 -
|
||||
Rule sol88 1988 only - Aug 30 12:00:35s -0:00:35 -
|
||||
Rule sol88 1988 only - Aug 31 12:00:15s -0:00:15 -
|
||||
Rule sol88 1988 only - Sep 1 11:59:55s 0:00:05 -
|
||||
Rule sol88 1988 only - Sep 2 11:59:35s 0:00:25 -
|
||||
Rule sol88 1988 only - Sep 3 11:59:20s 0:00:40 -
|
||||
Rule sol88 1988 only - Sep 4 11:59:00s 0:01:00 -
|
||||
Rule sol88 1988 only - Sep 5 11:58:40s 0:01:20 -
|
||||
Rule sol88 1988 only - Sep 6 11:58:20s 0:01:40 -
|
||||
Rule sol88 1988 only - Sep 7 11:58:00s 0:02:00 -
|
||||
Rule sol88 1988 only - Sep 8 11:57:35s 0:02:25 -
|
||||
Rule sol88 1988 only - Sep 9 11:57:15s 0:02:45 -
|
||||
Rule sol88 1988 only - Sep 10 11:56:55s 0:03:05 -
|
||||
Rule sol88 1988 only - Sep 11 11:56:35s 0:03:25 -
|
||||
Rule sol88 1988 only - Sep 12 11:56:15s 0:03:45 -
|
||||
Rule sol88 1988 only - Sep 13 11:55:50s 0:04:10 -
|
||||
Rule sol88 1988 only - Sep 14 11:55:30s 0:04:30 -
|
||||
Rule sol88 1988 only - Sep 15 11:55:10s 0:04:50 -
|
||||
Rule sol88 1988 only - Sep 16 11:54:50s 0:05:10 -
|
||||
Rule sol88 1988 only - Sep 17 11:54:25s 0:05:35 -
|
||||
Rule sol88 1988 only - Sep 18 11:54:05s 0:05:55 -
|
||||
Rule sol88 1988 only - Sep 19 11:53:45s 0:06:15 -
|
||||
Rule sol88 1988 only - Sep 20 11:53:25s 0:06:35 -
|
||||
Rule sol88 1988 only - Sep 21 11:53:00s 0:07:00 -
|
||||
Rule sol88 1988 only - Sep 22 11:52:40s 0:07:20 -
|
||||
Rule sol88 1988 only - Sep 23 11:52:20s 0:07:40 -
|
||||
Rule sol88 1988 only - Sep 24 11:52:00s 0:08:00 -
|
||||
Rule sol88 1988 only - Sep 25 11:51:40s 0:08:20 -
|
||||
Rule sol88 1988 only - Sep 26 11:51:15s 0:08:45 -
|
||||
Rule sol88 1988 only - Sep 27 11:50:55s 0:09:05 -
|
||||
Rule sol88 1988 only - Sep 28 11:50:35s 0:09:25 -
|
||||
Rule sol88 1988 only - Sep 29 11:50:15s 0:09:45 -
|
||||
Rule sol88 1988 only - Sep 30 11:49:55s 0:10:05 -
|
||||
Rule sol88 1988 only - Oct 1 11:49:35s 0:10:25 -
|
||||
Rule sol88 1988 only - Oct 2 11:49:20s 0:10:40 -
|
||||
Rule sol88 1988 only - Oct 3 11:49:00s 0:11:00 -
|
||||
Rule sol88 1988 only - Oct 4 11:48:40s 0:11:20 -
|
||||
Rule sol88 1988 only - Oct 5 11:48:25s 0:11:35 -
|
||||
Rule sol88 1988 only - Oct 6 11:48:05s 0:11:55 -
|
||||
Rule sol88 1988 only - Oct 7 11:47:50s 0:12:10 -
|
||||
Rule sol88 1988 only - Oct 8 11:47:30s 0:12:30 -
|
||||
Rule sol88 1988 only - Oct 9 11:47:15s 0:12:45 -
|
||||
Rule sol88 1988 only - Oct 10 11:47:00s 0:13:00 -
|
||||
Rule sol88 1988 only - Oct 11 11:46:45s 0:13:15 -
|
||||
Rule sol88 1988 only - Oct 12 11:46:30s 0:13:30 -
|
||||
Rule sol88 1988 only - Oct 13 11:46:15s 0:13:45 -
|
||||
Rule sol88 1988 only - Oct 14 11:46:00s 0:14:00 -
|
||||
Rule sol88 1988 only - Oct 15 11:45:45s 0:14:15 -
|
||||
Rule sol88 1988 only - Oct 16 11:45:35s 0:14:25 -
|
||||
Rule sol88 1988 only - Oct 17 11:45:20s 0:14:40 -
|
||||
Rule sol88 1988 only - Oct 18 11:45:10s 0:14:50 -
|
||||
Rule sol88 1988 only - Oct 19 11:45:00s 0:15:00 -
|
||||
Rule sol88 1988 only - Oct 20 11:44:45s 0:15:15 -
|
||||
Rule sol88 1988 only - Oct 21 11:44:40s 0:15:20 -
|
||||
Rule sol88 1988 only - Oct 22 11:44:30s 0:15:30 -
|
||||
Rule sol88 1988 only - Oct 23 11:44:20s 0:15:40 -
|
||||
Rule sol88 1988 only - Oct 24 11:44:10s 0:15:50 -
|
||||
Rule sol88 1988 only - Oct 25 11:44:05s 0:15:55 -
|
||||
Rule sol88 1988 only - Oct 26 11:44:00s 0:16:00 -
|
||||
Rule sol88 1988 only - Oct 27 11:43:55s 0:16:05 -
|
||||
Rule sol88 1988 only - Oct 28 11:43:50s 0:16:10 -
|
||||
Rule sol88 1988 only - Oct 29 11:43:45s 0:16:15 -
|
||||
Rule sol88 1988 only - Oct 30 11:43:40s 0:16:20 -
|
||||
Rule sol88 1988 only - Oct 31 11:43:40s 0:16:20 -
|
||||
Rule sol88 1988 only - Nov 1 11:43:35s 0:16:25 -
|
||||
Rule sol88 1988 only - Nov 2 11:43:35s 0:16:25 -
|
||||
Rule sol88 1988 only - Nov 3 11:43:35s 0:16:25 -
|
||||
Rule sol88 1988 only - Nov 4 11:43:35s 0:16:25 -
|
||||
Rule sol88 1988 only - Nov 5 11:43:40s 0:16:20 -
|
||||
Rule sol88 1988 only - Nov 6 11:43:40s 0:16:20 -
|
||||
Rule sol88 1988 only - Nov 7 11:43:45s 0:16:15 -
|
||||
Rule sol88 1988 only - Nov 8 11:43:45s 0:16:15 -
|
||||
Rule sol88 1988 only - Nov 9 11:43:50s 0:16:10 -
|
||||
Rule sol88 1988 only - Nov 10 11:44:00s 0:16:00 -
|
||||
Rule sol88 1988 only - Nov 11 11:44:05s 0:15:55 -
|
||||
Rule sol88 1988 only - Nov 12 11:44:10s 0:15:50 -
|
||||
Rule sol88 1988 only - Nov 13 11:44:20s 0:15:40 -
|
||||
Rule sol88 1988 only - Nov 14 11:44:30s 0:15:30 -
|
||||
Rule sol88 1988 only - Nov 15 11:44:40s 0:15:20 -
|
||||
Rule sol88 1988 only - Nov 16 11:44:50s 0:15:10 -
|
||||
Rule sol88 1988 only - Nov 17 11:45:00s 0:15:00 -
|
||||
Rule sol88 1988 only - Nov 18 11:45:15s 0:14:45 -
|
||||
Rule sol88 1988 only - Nov 19 11:45:25s 0:14:35 -
|
||||
Rule sol88 1988 only - Nov 20 11:45:40s 0:14:20 -
|
||||
Rule sol88 1988 only - Nov 21 11:45:55s 0:14:05 -
|
||||
Rule sol88 1988 only - Nov 22 11:46:10s 0:13:50 -
|
||||
Rule sol88 1988 only - Nov 23 11:46:30s 0:13:30 -
|
||||
Rule sol88 1988 only - Nov 24 11:46:45s 0:13:15 -
|
||||
Rule sol88 1988 only - Nov 25 11:47:05s 0:12:55 -
|
||||
Rule sol88 1988 only - Nov 26 11:47:20s 0:12:40 -
|
||||
Rule sol88 1988 only - Nov 27 11:47:40s 0:12:20 -
|
||||
Rule sol88 1988 only - Nov 28 11:48:00s 0:12:00 -
|
||||
Rule sol88 1988 only - Nov 29 11:48:25s 0:11:35 -
|
||||
Rule sol88 1988 only - Nov 30 11:48:45s 0:11:15 -
|
||||
Rule sol88 1988 only - Dec 1 11:49:05s 0:10:55 -
|
||||
Rule sol88 1988 only - Dec 2 11:49:30s 0:10:30 -
|
||||
Rule sol88 1988 only - Dec 3 11:49:55s 0:10:05 -
|
||||
Rule sol88 1988 only - Dec 4 11:50:15s 0:09:45 -
|
||||
Rule sol88 1988 only - Dec 5 11:50:40s 0:09:20 -
|
||||
Rule sol88 1988 only - Dec 6 11:51:05s 0:08:55 -
|
||||
Rule sol88 1988 only - Dec 7 11:51:35s 0:08:25 -
|
||||
Rule sol88 1988 only - Dec 8 11:52:00s 0:08:00 -
|
||||
Rule sol88 1988 only - Dec 9 11:52:25s 0:07:35 -
|
||||
Rule sol88 1988 only - Dec 10 11:52:55s 0:07:05 -
|
||||
Rule sol88 1988 only - Dec 11 11:53:20s 0:06:40 -
|
||||
Rule sol88 1988 only - Dec 12 11:53:50s 0:06:10 -
|
||||
Rule sol88 1988 only - Dec 13 11:54:15s 0:05:45 -
|
||||
Rule sol88 1988 only - Dec 14 11:54:45s 0:05:15 -
|
||||
Rule sol88 1988 only - Dec 15 11:55:15s 0:04:45 -
|
||||
Rule sol88 1988 only - Dec 16 11:55:45s 0:04:15 -
|
||||
Rule sol88 1988 only - Dec 17 11:56:15s 0:03:45 -
|
||||
Rule sol88 1988 only - Dec 18 11:56:40s 0:03:20 -
|
||||
Rule sol88 1988 only - Dec 19 11:57:10s 0:02:50 -
|
||||
Rule sol88 1988 only - Dec 20 11:57:40s 0:02:20 -
|
||||
Rule sol88 1988 only - Dec 21 11:58:10s 0:01:50 -
|
||||
Rule sol88 1988 only - Dec 22 11:58:40s 0:01:20 -
|
||||
Rule sol88 1988 only - Dec 23 11:59:10s 0:00:50 -
|
||||
Rule sol88 1988 only - Dec 24 11:59:40s 0:00:20 -
|
||||
Rule sol88 1988 only - Dec 25 12:00:10s -0:00:10 -
|
||||
Rule sol88 1988 only - Dec 26 12:00:40s -0:00:40 -
|
||||
Rule sol88 1988 only - Dec 27 12:01:10s -0:01:10 -
|
||||
Rule sol88 1988 only - Dec 28 12:01:40s -0:01:40 -
|
||||
Rule sol88 1988 only - Dec 29 12:02:10s -0:02:10 -
|
||||
Rule sol88 1988 only - Dec 30 12:02:35s -0:02:35 -
|
||||
Rule sol88 1988 only - Dec 31 12:03:05s -0:03:05 -
|
||||
|
||||
# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
|
||||
# Before and after 1988, we'll operate on local mean solar time.
|
||||
|
||||
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
Zone Asia/Riyadh88 3:07:04 - zzz 1988
|
||||
3:07:04 sol88 zzz 1989
|
||||
3:07:04 - zzz
|
||||
# For backward compatibility...
|
||||
Link Asia/Riyadh88 Mideast/Riyadh88
|
393
commands/zoneinfo/solar89
Normal file
393
commands/zoneinfo/solar89
Normal file
|
@ -0,0 +1,393 @@
|
|||
# @(#)solar89 8.1
|
||||
|
||||
# Apparent noon times below are for Riyadh; they're a bit off for other places.
|
||||
# Times were computed using a formula provided by the U. S. Naval Observatory:
|
||||
# eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
|
||||
# -12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
|
||||
# + 19.3 * cos(3 * l);
|
||||
# where l is the "mean longitude of the Sun" given by
|
||||
# l = 279.642 degrees + 0.985647 * d
|
||||
# and d is the interval in days from January 0, 0 hours Universal Time
|
||||
# (equaling the day of the year plus the fraction of a day from zero hours).
|
||||
# The accuracy of the formula is plus or minus three seconds.
|
||||
#
|
||||
# Rounding to the nearest five seconds results in fewer than
|
||||
# 256 different "time types"--a limit that's faced because time types are
|
||||
# stored on disk as unsigned chars.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule sol89 1989 only - Jan 1 12:03:35s -0:03:35 -
|
||||
Rule sol89 1989 only - Jan 2 12:04:05s -0:04:05 -
|
||||
Rule sol89 1989 only - Jan 3 12:04:30s -0:04:30 -
|
||||
Rule sol89 1989 only - Jan 4 12:05:00s -0:05:00 -
|
||||
Rule sol89 1989 only - Jan 5 12:05:25s -0:05:25 -
|
||||
Rule sol89 1989 only - Jan 6 12:05:50s -0:05:50 -
|
||||
Rule sol89 1989 only - Jan 7 12:06:15s -0:06:15 -
|
||||
Rule sol89 1989 only - Jan 8 12:06:45s -0:06:45 -
|
||||
Rule sol89 1989 only - Jan 9 12:07:10s -0:07:10 -
|
||||
Rule sol89 1989 only - Jan 10 12:07:35s -0:07:35 -
|
||||
Rule sol89 1989 only - Jan 11 12:07:55s -0:07:55 -
|
||||
Rule sol89 1989 only - Jan 12 12:08:20s -0:08:20 -
|
||||
Rule sol89 1989 only - Jan 13 12:08:45s -0:08:45 -
|
||||
Rule sol89 1989 only - Jan 14 12:09:05s -0:09:05 -
|
||||
Rule sol89 1989 only - Jan 15 12:09:25s -0:09:25 -
|
||||
Rule sol89 1989 only - Jan 16 12:09:45s -0:09:45 -
|
||||
Rule sol89 1989 only - Jan 17 12:10:05s -0:10:05 -
|
||||
Rule sol89 1989 only - Jan 18 12:10:25s -0:10:25 -
|
||||
Rule sol89 1989 only - Jan 19 12:10:45s -0:10:45 -
|
||||
Rule sol89 1989 only - Jan 20 12:11:05s -0:11:05 -
|
||||
Rule sol89 1989 only - Jan 21 12:11:20s -0:11:20 -
|
||||
Rule sol89 1989 only - Jan 22 12:11:35s -0:11:35 -
|
||||
Rule sol89 1989 only - Jan 23 12:11:55s -0:11:55 -
|
||||
Rule sol89 1989 only - Jan 24 12:12:10s -0:12:10 -
|
||||
Rule sol89 1989 only - Jan 25 12:12:20s -0:12:20 -
|
||||
Rule sol89 1989 only - Jan 26 12:12:35s -0:12:35 -
|
||||
Rule sol89 1989 only - Jan 27 12:12:50s -0:12:50 -
|
||||
Rule sol89 1989 only - Jan 28 12:13:00s -0:13:00 -
|
||||
Rule sol89 1989 only - Jan 29 12:13:10s -0:13:10 -
|
||||
Rule sol89 1989 only - Jan 30 12:13:20s -0:13:20 -
|
||||
Rule sol89 1989 only - Jan 31 12:13:30s -0:13:30 -
|
||||
Rule sol89 1989 only - Feb 1 12:13:40s -0:13:40 -
|
||||
Rule sol89 1989 only - Feb 2 12:13:45s -0:13:45 -
|
||||
Rule sol89 1989 only - Feb 3 12:13:55s -0:13:55 -
|
||||
Rule sol89 1989 only - Feb 4 12:14:00s -0:14:00 -
|
||||
Rule sol89 1989 only - Feb 5 12:14:05s -0:14:05 -
|
||||
Rule sol89 1989 only - Feb 6 12:14:10s -0:14:10 -
|
||||
Rule sol89 1989 only - Feb 7 12:14:10s -0:14:10 -
|
||||
Rule sol89 1989 only - Feb 8 12:14:15s -0:14:15 -
|
||||
Rule sol89 1989 only - Feb 9 12:14:15s -0:14:15 -
|
||||
Rule sol89 1989 only - Feb 10 12:14:20s -0:14:20 -
|
||||
Rule sol89 1989 only - Feb 11 12:14:20s -0:14:20 -
|
||||
Rule sol89 1989 only - Feb 12 12:14:20s -0:14:20 -
|
||||
Rule sol89 1989 only - Feb 13 12:14:15s -0:14:15 -
|
||||
Rule sol89 1989 only - Feb 14 12:14:15s -0:14:15 -
|
||||
Rule sol89 1989 only - Feb 15 12:14:10s -0:14:10 -
|
||||
Rule sol89 1989 only - Feb 16 12:14:10s -0:14:10 -
|
||||
Rule sol89 1989 only - Feb 17 12:14:05s -0:14:05 -
|
||||
Rule sol89 1989 only - Feb 18 12:14:00s -0:14:00 -
|
||||
Rule sol89 1989 only - Feb 19 12:13:55s -0:13:55 -
|
||||
Rule sol89 1989 only - Feb 20 12:13:50s -0:13:50 -
|
||||
Rule sol89 1989 only - Feb 21 12:13:40s -0:13:40 -
|
||||
Rule sol89 1989 only - Feb 22 12:13:35s -0:13:35 -
|
||||
Rule sol89 1989 only - Feb 23 12:13:25s -0:13:25 -
|
||||
Rule sol89 1989 only - Feb 24 12:13:15s -0:13:15 -
|
||||
Rule sol89 1989 only - Feb 25 12:13:05s -0:13:05 -
|
||||
Rule sol89 1989 only - Feb 26 12:12:55s -0:12:55 -
|
||||
Rule sol89 1989 only - Feb 27 12:12:45s -0:12:45 -
|
||||
Rule sol89 1989 only - Feb 28 12:12:35s -0:12:35 -
|
||||
Rule sol89 1989 only - Mar 1 12:12:25s -0:12:25 -
|
||||
Rule sol89 1989 only - Mar 2 12:12:10s -0:12:10 -
|
||||
Rule sol89 1989 only - Mar 3 12:12:00s -0:12:00 -
|
||||
Rule sol89 1989 only - Mar 4 12:11:45s -0:11:45 -
|
||||
Rule sol89 1989 only - Mar 5 12:11:35s -0:11:35 -
|
||||
Rule sol89 1989 only - Mar 6 12:11:20s -0:11:20 -
|
||||
Rule sol89 1989 only - Mar 7 12:11:05s -0:11:05 -
|
||||
Rule sol89 1989 only - Mar 8 12:10:50s -0:10:50 -
|
||||
Rule sol89 1989 only - Mar 9 12:10:35s -0:10:35 -
|
||||
Rule sol89 1989 only - Mar 10 12:10:20s -0:10:20 -
|
||||
Rule sol89 1989 only - Mar 11 12:10:05s -0:10:05 -
|
||||
Rule sol89 1989 only - Mar 12 12:09:50s -0:09:50 -
|
||||
Rule sol89 1989 only - Mar 13 12:09:30s -0:09:30 -
|
||||
Rule sol89 1989 only - Mar 14 12:09:15s -0:09:15 -
|
||||
Rule sol89 1989 only - Mar 15 12:09:00s -0:09:00 -
|
||||
Rule sol89 1989 only - Mar 16 12:08:40s -0:08:40 -
|
||||
Rule sol89 1989 only - Mar 17 12:08:25s -0:08:25 -
|
||||
Rule sol89 1989 only - Mar 18 12:08:05s -0:08:05 -
|
||||
Rule sol89 1989 only - Mar 19 12:07:50s -0:07:50 -
|
||||
Rule sol89 1989 only - Mar 20 12:07:30s -0:07:30 -
|
||||
Rule sol89 1989 only - Mar 21 12:07:15s -0:07:15 -
|
||||
Rule sol89 1989 only - Mar 22 12:06:55s -0:06:55 -
|
||||
Rule sol89 1989 only - Mar 23 12:06:35s -0:06:35 -
|
||||
Rule sol89 1989 only - Mar 24 12:06:20s -0:06:20 -
|
||||
Rule sol89 1989 only - Mar 25 12:06:00s -0:06:00 -
|
||||
Rule sol89 1989 only - Mar 26 12:05:40s -0:05:40 -
|
||||
Rule sol89 1989 only - Mar 27 12:05:25s -0:05:25 -
|
||||
Rule sol89 1989 only - Mar 28 12:05:05s -0:05:05 -
|
||||
Rule sol89 1989 only - Mar 29 12:04:50s -0:04:50 -
|
||||
Rule sol89 1989 only - Mar 30 12:04:30s -0:04:30 -
|
||||
Rule sol89 1989 only - Mar 31 12:04:10s -0:04:10 -
|
||||
Rule sol89 1989 only - Apr 1 12:03:55s -0:03:55 -
|
||||
Rule sol89 1989 only - Apr 2 12:03:35s -0:03:35 -
|
||||
Rule sol89 1989 only - Apr 3 12:03:20s -0:03:20 -
|
||||
Rule sol89 1989 only - Apr 4 12:03:00s -0:03:00 -
|
||||
Rule sol89 1989 only - Apr 5 12:02:45s -0:02:45 -
|
||||
Rule sol89 1989 only - Apr 6 12:02:25s -0:02:25 -
|
||||
Rule sol89 1989 only - Apr 7 12:02:10s -0:02:10 -
|
||||
Rule sol89 1989 only - Apr 8 12:01:50s -0:01:50 -
|
||||
Rule sol89 1989 only - Apr 9 12:01:35s -0:01:35 -
|
||||
Rule sol89 1989 only - Apr 10 12:01:20s -0:01:20 -
|
||||
Rule sol89 1989 only - Apr 11 12:01:05s -0:01:05 -
|
||||
Rule sol89 1989 only - Apr 12 12:00:50s -0:00:50 -
|
||||
Rule sol89 1989 only - Apr 13 12:00:35s -0:00:35 -
|
||||
Rule sol89 1989 only - Apr 14 12:00:20s -0:00:20 -
|
||||
Rule sol89 1989 only - Apr 15 12:00:05s -0:00:05 -
|
||||
Rule sol89 1989 only - Apr 16 11:59:50s 0:00:10 -
|
||||
Rule sol89 1989 only - Apr 17 11:59:35s 0:00:25 -
|
||||
Rule sol89 1989 only - Apr 18 11:59:20s 0:00:40 -
|
||||
Rule sol89 1989 only - Apr 19 11:59:10s 0:00:50 -
|
||||
Rule sol89 1989 only - Apr 20 11:58:55s 0:01:05 -
|
||||
Rule sol89 1989 only - Apr 21 11:58:45s 0:01:15 -
|
||||
Rule sol89 1989 only - Apr 22 11:58:30s 0:01:30 -
|
||||
Rule sol89 1989 only - Apr 23 11:58:20s 0:01:40 -
|
||||
Rule sol89 1989 only - Apr 24 11:58:10s 0:01:50 -
|
||||
Rule sol89 1989 only - Apr 25 11:58:00s 0:02:00 -
|
||||
Rule sol89 1989 only - Apr 26 11:57:50s 0:02:10 -
|
||||
Rule sol89 1989 only - Apr 27 11:57:40s 0:02:20 -
|
||||
Rule sol89 1989 only - Apr 28 11:57:30s 0:02:30 -
|
||||
Rule sol89 1989 only - Apr 29 11:57:20s 0:02:40 -
|
||||
Rule sol89 1989 only - Apr 30 11:57:15s 0:02:45 -
|
||||
Rule sol89 1989 only - May 1 11:57:05s 0:02:55 -
|
||||
Rule sol89 1989 only - May 2 11:57:00s 0:03:00 -
|
||||
Rule sol89 1989 only - May 3 11:56:50s 0:03:10 -
|
||||
Rule sol89 1989 only - May 4 11:56:45s 0:03:15 -
|
||||
Rule sol89 1989 only - May 5 11:56:40s 0:03:20 -
|
||||
Rule sol89 1989 only - May 6 11:56:35s 0:03:25 -
|
||||
Rule sol89 1989 only - May 7 11:56:30s 0:03:30 -
|
||||
Rule sol89 1989 only - May 8 11:56:30s 0:03:30 -
|
||||
Rule sol89 1989 only - May 9 11:56:25s 0:03:35 -
|
||||
Rule sol89 1989 only - May 10 11:56:25s 0:03:35 -
|
||||
Rule sol89 1989 only - May 11 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 12 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 13 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 14 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 15 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 16 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 17 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - May 18 11:56:25s 0:03:35 -
|
||||
Rule sol89 1989 only - May 19 11:56:25s 0:03:35 -
|
||||
Rule sol89 1989 only - May 20 11:56:30s 0:03:30 -
|
||||
Rule sol89 1989 only - May 21 11:56:35s 0:03:25 -
|
||||
Rule sol89 1989 only - May 22 11:56:35s 0:03:25 -
|
||||
Rule sol89 1989 only - May 23 11:56:40s 0:03:20 -
|
||||
Rule sol89 1989 only - May 24 11:56:45s 0:03:15 -
|
||||
Rule sol89 1989 only - May 25 11:56:55s 0:03:05 -
|
||||
Rule sol89 1989 only - May 26 11:57:00s 0:03:00 -
|
||||
Rule sol89 1989 only - May 27 11:57:05s 0:02:55 -
|
||||
Rule sol89 1989 only - May 28 11:57:15s 0:02:45 -
|
||||
Rule sol89 1989 only - May 29 11:57:20s 0:02:40 -
|
||||
Rule sol89 1989 only - May 30 11:57:30s 0:02:30 -
|
||||
Rule sol89 1989 only - May 31 11:57:35s 0:02:25 -
|
||||
Rule sol89 1989 only - Jun 1 11:57:45s 0:02:15 -
|
||||
Rule sol89 1989 only - Jun 2 11:57:55s 0:02:05 -
|
||||
Rule sol89 1989 only - Jun 3 11:58:05s 0:01:55 -
|
||||
Rule sol89 1989 only - Jun 4 11:58:15s 0:01:45 -
|
||||
Rule sol89 1989 only - Jun 5 11:58:25s 0:01:35 -
|
||||
Rule sol89 1989 only - Jun 6 11:58:35s 0:01:25 -
|
||||
Rule sol89 1989 only - Jun 7 11:58:45s 0:01:15 -
|
||||
Rule sol89 1989 only - Jun 8 11:59:00s 0:01:00 -
|
||||
Rule sol89 1989 only - Jun 9 11:59:10s 0:00:50 -
|
||||
Rule sol89 1989 only - Jun 10 11:59:20s 0:00:40 -
|
||||
Rule sol89 1989 only - Jun 11 11:59:35s 0:00:25 -
|
||||
Rule sol89 1989 only - Jun 12 11:59:45s 0:00:15 -
|
||||
Rule sol89 1989 only - Jun 13 12:00:00s 0:00:00 -
|
||||
Rule sol89 1989 only - Jun 14 12:00:10s -0:00:10 -
|
||||
Rule sol89 1989 only - Jun 15 12:00:25s -0:00:25 -
|
||||
Rule sol89 1989 only - Jun 16 12:00:35s -0:00:35 -
|
||||
Rule sol89 1989 only - Jun 17 12:00:50s -0:00:50 -
|
||||
Rule sol89 1989 only - Jun 18 12:01:05s -0:01:05 -
|
||||
Rule sol89 1989 only - Jun 19 12:01:15s -0:01:15 -
|
||||
Rule sol89 1989 only - Jun 20 12:01:30s -0:01:30 -
|
||||
Rule sol89 1989 only - Jun 21 12:01:40s -0:01:40 -
|
||||
Rule sol89 1989 only - Jun 22 12:01:55s -0:01:55 -
|
||||
Rule sol89 1989 only - Jun 23 12:02:10s -0:02:10 -
|
||||
Rule sol89 1989 only - Jun 24 12:02:20s -0:02:20 -
|
||||
Rule sol89 1989 only - Jun 25 12:02:35s -0:02:35 -
|
||||
Rule sol89 1989 only - Jun 26 12:02:45s -0:02:45 -
|
||||
Rule sol89 1989 only - Jun 27 12:03:00s -0:03:00 -
|
||||
Rule sol89 1989 only - Jun 28 12:03:10s -0:03:10 -
|
||||
Rule sol89 1989 only - Jun 29 12:03:25s -0:03:25 -
|
||||
Rule sol89 1989 only - Jun 30 12:03:35s -0:03:35 -
|
||||
Rule sol89 1989 only - Jul 1 12:03:45s -0:03:45 -
|
||||
Rule sol89 1989 only - Jul 2 12:04:00s -0:04:00 -
|
||||
Rule sol89 1989 only - Jul 3 12:04:10s -0:04:10 -
|
||||
Rule sol89 1989 only - Jul 4 12:04:20s -0:04:20 -
|
||||
Rule sol89 1989 only - Jul 5 12:04:30s -0:04:30 -
|
||||
Rule sol89 1989 only - Jul 6 12:04:40s -0:04:40 -
|
||||
Rule sol89 1989 only - Jul 7 12:04:50s -0:04:50 -
|
||||
Rule sol89 1989 only - Jul 8 12:05:00s -0:05:00 -
|
||||
Rule sol89 1989 only - Jul 9 12:05:10s -0:05:10 -
|
||||
Rule sol89 1989 only - Jul 10 12:05:20s -0:05:20 -
|
||||
Rule sol89 1989 only - Jul 11 12:05:25s -0:05:25 -
|
||||
Rule sol89 1989 only - Jul 12 12:05:35s -0:05:35 -
|
||||
Rule sol89 1989 only - Jul 13 12:05:40s -0:05:40 -
|
||||
Rule sol89 1989 only - Jul 14 12:05:50s -0:05:50 -
|
||||
Rule sol89 1989 only - Jul 15 12:05:55s -0:05:55 -
|
||||
Rule sol89 1989 only - Jul 16 12:06:00s -0:06:00 -
|
||||
Rule sol89 1989 only - Jul 17 12:06:05s -0:06:05 -
|
||||
Rule sol89 1989 only - Jul 18 12:06:10s -0:06:10 -
|
||||
Rule sol89 1989 only - Jul 19 12:06:15s -0:06:15 -
|
||||
Rule sol89 1989 only - Jul 20 12:06:20s -0:06:20 -
|
||||
Rule sol89 1989 only - Jul 21 12:06:20s -0:06:20 -
|
||||
Rule sol89 1989 only - Jul 22 12:06:25s -0:06:25 -
|
||||
Rule sol89 1989 only - Jul 23 12:06:25s -0:06:25 -
|
||||
Rule sol89 1989 only - Jul 24 12:06:30s -0:06:30 -
|
||||
Rule sol89 1989 only - Jul 25 12:06:30s -0:06:30 -
|
||||
Rule sol89 1989 only - Jul 26 12:06:30s -0:06:30 -
|
||||
Rule sol89 1989 only - Jul 27 12:06:30s -0:06:30 -
|
||||
Rule sol89 1989 only - Jul 28 12:06:30s -0:06:30 -
|
||||
Rule sol89 1989 only - Jul 29 12:06:25s -0:06:25 -
|
||||
Rule sol89 1989 only - Jul 30 12:06:25s -0:06:25 -
|
||||
Rule sol89 1989 only - Jul 31 12:06:20s -0:06:20 -
|
||||
Rule sol89 1989 only - Aug 1 12:06:20s -0:06:20 -
|
||||
Rule sol89 1989 only - Aug 2 12:06:15s -0:06:15 -
|
||||
Rule sol89 1989 only - Aug 3 12:06:10s -0:06:10 -
|
||||
Rule sol89 1989 only - Aug 4 12:06:05s -0:06:05 -
|
||||
Rule sol89 1989 only - Aug 5 12:06:00s -0:06:00 -
|
||||
Rule sol89 1989 only - Aug 6 12:05:50s -0:05:50 -
|
||||
Rule sol89 1989 only - Aug 7 12:05:45s -0:05:45 -
|
||||
Rule sol89 1989 only - Aug 8 12:05:35s -0:05:35 -
|
||||
Rule sol89 1989 only - Aug 9 12:05:30s -0:05:30 -
|
||||
Rule sol89 1989 only - Aug 10 12:05:20s -0:05:20 -
|
||||
Rule sol89 1989 only - Aug 11 12:05:10s -0:05:10 -
|
||||
Rule sol89 1989 only - Aug 12 12:05:00s -0:05:00 -
|
||||
Rule sol89 1989 only - Aug 13 12:04:50s -0:04:50 -
|
||||
Rule sol89 1989 only - Aug 14 12:04:40s -0:04:40 -
|
||||
Rule sol89 1989 only - Aug 15 12:04:30s -0:04:30 -
|
||||
Rule sol89 1989 only - Aug 16 12:04:15s -0:04:15 -
|
||||
Rule sol89 1989 only - Aug 17 12:04:05s -0:04:05 -
|
||||
Rule sol89 1989 only - Aug 18 12:03:50s -0:03:50 -
|
||||
Rule sol89 1989 only - Aug 19 12:03:35s -0:03:35 -
|
||||
Rule sol89 1989 only - Aug 20 12:03:25s -0:03:25 -
|
||||
Rule sol89 1989 only - Aug 21 12:03:10s -0:03:10 -
|
||||
Rule sol89 1989 only - Aug 22 12:02:55s -0:02:55 -
|
||||
Rule sol89 1989 only - Aug 23 12:02:40s -0:02:40 -
|
||||
Rule sol89 1989 only - Aug 24 12:02:20s -0:02:20 -
|
||||
Rule sol89 1989 only - Aug 25 12:02:05s -0:02:05 -
|
||||
Rule sol89 1989 only - Aug 26 12:01:50s -0:01:50 -
|
||||
Rule sol89 1989 only - Aug 27 12:01:30s -0:01:30 -
|
||||
Rule sol89 1989 only - Aug 28 12:01:15s -0:01:15 -
|
||||
Rule sol89 1989 only - Aug 29 12:00:55s -0:00:55 -
|
||||
Rule sol89 1989 only - Aug 30 12:00:40s -0:00:40 -
|
||||
Rule sol89 1989 only - Aug 31 12:00:20s -0:00:20 -
|
||||
Rule sol89 1989 only - Sep 1 12:00:00s 0:00:00 -
|
||||
Rule sol89 1989 only - Sep 2 11:59:45s 0:00:15 -
|
||||
Rule sol89 1989 only - Sep 3 11:59:25s 0:00:35 -
|
||||
Rule sol89 1989 only - Sep 4 11:59:05s 0:00:55 -
|
||||
Rule sol89 1989 only - Sep 5 11:58:45s 0:01:15 -
|
||||
Rule sol89 1989 only - Sep 6 11:58:25s 0:01:35 -
|
||||
Rule sol89 1989 only - Sep 7 11:58:05s 0:01:55 -
|
||||
Rule sol89 1989 only - Sep 8 11:57:45s 0:02:15 -
|
||||
Rule sol89 1989 only - Sep 9 11:57:20s 0:02:40 -
|
||||
Rule sol89 1989 only - Sep 10 11:57:00s 0:03:00 -
|
||||
Rule sol89 1989 only - Sep 11 11:56:40s 0:03:20 -
|
||||
Rule sol89 1989 only - Sep 12 11:56:20s 0:03:40 -
|
||||
Rule sol89 1989 only - Sep 13 11:56:00s 0:04:00 -
|
||||
Rule sol89 1989 only - Sep 14 11:55:35s 0:04:25 -
|
||||
Rule sol89 1989 only - Sep 15 11:55:15s 0:04:45 -
|
||||
Rule sol89 1989 only - Sep 16 11:54:55s 0:05:05 -
|
||||
Rule sol89 1989 only - Sep 17 11:54:35s 0:05:25 -
|
||||
Rule sol89 1989 only - Sep 18 11:54:10s 0:05:50 -
|
||||
Rule sol89 1989 only - Sep 19 11:53:50s 0:06:10 -
|
||||
Rule sol89 1989 only - Sep 20 11:53:30s 0:06:30 -
|
||||
Rule sol89 1989 only - Sep 21 11:53:10s 0:06:50 -
|
||||
Rule sol89 1989 only - Sep 22 11:52:45s 0:07:15 -
|
||||
Rule sol89 1989 only - Sep 23 11:52:25s 0:07:35 -
|
||||
Rule sol89 1989 only - Sep 24 11:52:05s 0:07:55 -
|
||||
Rule sol89 1989 only - Sep 25 11:51:45s 0:08:15 -
|
||||
Rule sol89 1989 only - Sep 26 11:51:25s 0:08:35 -
|
||||
Rule sol89 1989 only - Sep 27 11:51:05s 0:08:55 -
|
||||
Rule sol89 1989 only - Sep 28 11:50:40s 0:09:20 -
|
||||
Rule sol89 1989 only - Sep 29 11:50:20s 0:09:40 -
|
||||
Rule sol89 1989 only - Sep 30 11:50:00s 0:10:00 -
|
||||
Rule sol89 1989 only - Oct 1 11:49:45s 0:10:15 -
|
||||
Rule sol89 1989 only - Oct 2 11:49:25s 0:10:35 -
|
||||
Rule sol89 1989 only - Oct 3 11:49:05s 0:10:55 -
|
||||
Rule sol89 1989 only - Oct 4 11:48:45s 0:11:15 -
|
||||
Rule sol89 1989 only - Oct 5 11:48:30s 0:11:30 -
|
||||
Rule sol89 1989 only - Oct 6 11:48:10s 0:11:50 -
|
||||
Rule sol89 1989 only - Oct 7 11:47:50s 0:12:10 -
|
||||
Rule sol89 1989 only - Oct 8 11:47:35s 0:12:25 -
|
||||
Rule sol89 1989 only - Oct 9 11:47:20s 0:12:40 -
|
||||
Rule sol89 1989 only - Oct 10 11:47:00s 0:13:00 -
|
||||
Rule sol89 1989 only - Oct 11 11:46:45s 0:13:15 -
|
||||
Rule sol89 1989 only - Oct 12 11:46:30s 0:13:30 -
|
||||
Rule sol89 1989 only - Oct 13 11:46:15s 0:13:45 -
|
||||
Rule sol89 1989 only - Oct 14 11:46:00s 0:14:00 -
|
||||
Rule sol89 1989 only - Oct 15 11:45:50s 0:14:10 -
|
||||
Rule sol89 1989 only - Oct 16 11:45:35s 0:14:25 -
|
||||
Rule sol89 1989 only - Oct 17 11:45:20s 0:14:40 -
|
||||
Rule sol89 1989 only - Oct 18 11:45:10s 0:14:50 -
|
||||
Rule sol89 1989 only - Oct 19 11:45:00s 0:15:00 -
|
||||
Rule sol89 1989 only - Oct 20 11:44:50s 0:15:10 -
|
||||
Rule sol89 1989 only - Oct 21 11:44:40s 0:15:20 -
|
||||
Rule sol89 1989 only - Oct 22 11:44:30s 0:15:30 -
|
||||
Rule sol89 1989 only - Oct 23 11:44:20s 0:15:40 -
|
||||
Rule sol89 1989 only - Oct 24 11:44:10s 0:15:50 -
|
||||
Rule sol89 1989 only - Oct 25 11:44:05s 0:15:55 -
|
||||
Rule sol89 1989 only - Oct 26 11:44:00s 0:16:00 -
|
||||
Rule sol89 1989 only - Oct 27 11:43:50s 0:16:10 -
|
||||
Rule sol89 1989 only - Oct 28 11:43:45s 0:16:15 -
|
||||
Rule sol89 1989 only - Oct 29 11:43:40s 0:16:20 -
|
||||
Rule sol89 1989 only - Oct 30 11:43:40s 0:16:20 -
|
||||
Rule sol89 1989 only - Oct 31 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 1 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 2 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 3 11:43:30s 0:16:30 -
|
||||
Rule sol89 1989 only - Nov 4 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 5 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 6 11:43:35s 0:16:25 -
|
||||
Rule sol89 1989 only - Nov 7 11:43:40s 0:16:20 -
|
||||
Rule sol89 1989 only - Nov 8 11:43:45s 0:16:15 -
|
||||
Rule sol89 1989 only - Nov 9 11:43:50s 0:16:10 -
|
||||
Rule sol89 1989 only - Nov 10 11:43:55s 0:16:05 -
|
||||
Rule sol89 1989 only - Nov 11 11:44:00s 0:16:00 -
|
||||
Rule sol89 1989 only - Nov 12 11:44:05s 0:15:55 -
|
||||
Rule sol89 1989 only - Nov 13 11:44:15s 0:15:45 -
|
||||
Rule sol89 1989 only - Nov 14 11:44:25s 0:15:35 -
|
||||
Rule sol89 1989 only - Nov 15 11:44:35s 0:15:25 -
|
||||
Rule sol89 1989 only - Nov 16 11:44:45s 0:15:15 -
|
||||
Rule sol89 1989 only - Nov 17 11:44:55s 0:15:05 -
|
||||
Rule sol89 1989 only - Nov 18 11:45:10s 0:14:50 -
|
||||
Rule sol89 1989 only - Nov 19 11:45:20s 0:14:40 -
|
||||
Rule sol89 1989 only - Nov 20 11:45:35s 0:14:25 -
|
||||
Rule sol89 1989 only - Nov 21 11:45:50s 0:14:10 -
|
||||
Rule sol89 1989 only - Nov 22 11:46:05s 0:13:55 -
|
||||
Rule sol89 1989 only - Nov 23 11:46:25s 0:13:35 -
|
||||
Rule sol89 1989 only - Nov 24 11:46:40s 0:13:20 -
|
||||
Rule sol89 1989 only - Nov 25 11:47:00s 0:13:00 -
|
||||
Rule sol89 1989 only - Nov 26 11:47:20s 0:12:40 -
|
||||
Rule sol89 1989 only - Nov 27 11:47:35s 0:12:25 -
|
||||
Rule sol89 1989 only - Nov 28 11:47:55s 0:12:05 -
|
||||
Rule sol89 1989 only - Nov 29 11:48:20s 0:11:40 -
|
||||
Rule sol89 1989 only - Nov 30 11:48:40s 0:11:20 -
|
||||
Rule sol89 1989 only - Dec 1 11:49:00s 0:11:00 -
|
||||
Rule sol89 1989 only - Dec 2 11:49:25s 0:10:35 -
|
||||
Rule sol89 1989 only - Dec 3 11:49:50s 0:10:10 -
|
||||
Rule sol89 1989 only - Dec 4 11:50:15s 0:09:45 -
|
||||
Rule sol89 1989 only - Dec 5 11:50:35s 0:09:25 -
|
||||
Rule sol89 1989 only - Dec 6 11:51:00s 0:09:00 -
|
||||
Rule sol89 1989 only - Dec 7 11:51:30s 0:08:30 -
|
||||
Rule sol89 1989 only - Dec 8 11:51:55s 0:08:05 -
|
||||
Rule sol89 1989 only - Dec 9 11:52:20s 0:07:40 -
|
||||
Rule sol89 1989 only - Dec 10 11:52:50s 0:07:10 -
|
||||
Rule sol89 1989 only - Dec 11 11:53:15s 0:06:45 -
|
||||
Rule sol89 1989 only - Dec 12 11:53:45s 0:06:15 -
|
||||
Rule sol89 1989 only - Dec 13 11:54:10s 0:05:50 -
|
||||
Rule sol89 1989 only - Dec 14 11:54:40s 0:05:20 -
|
||||
Rule sol89 1989 only - Dec 15 11:55:10s 0:04:50 -
|
||||
Rule sol89 1989 only - Dec 16 11:55:40s 0:04:20 -
|
||||
Rule sol89 1989 only - Dec 17 11:56:05s 0:03:55 -
|
||||
Rule sol89 1989 only - Dec 18 11:56:35s 0:03:25 -
|
||||
Rule sol89 1989 only - Dec 19 11:57:05s 0:02:55 -
|
||||
Rule sol89 1989 only - Dec 20 11:57:35s 0:02:25 -
|
||||
Rule sol89 1989 only - Dec 21 11:58:05s 0:01:55 -
|
||||
Rule sol89 1989 only - Dec 22 11:58:35s 0:01:25 -
|
||||
Rule sol89 1989 only - Dec 23 11:59:05s 0:00:55 -
|
||||
Rule sol89 1989 only - Dec 24 11:59:35s 0:00:25 -
|
||||
Rule sol89 1989 only - Dec 25 12:00:05s -0:00:05 -
|
||||
Rule sol89 1989 only - Dec 26 12:00:35s -0:00:35 -
|
||||
Rule sol89 1989 only - Dec 27 12:01:05s -0:01:05 -
|
||||
Rule sol89 1989 only - Dec 28 12:01:35s -0:01:35 -
|
||||
Rule sol89 1989 only - Dec 29 12:02:00s -0:02:00 -
|
||||
Rule sol89 1989 only - Dec 30 12:02:30s -0:02:30 -
|
||||
Rule sol89 1989 only - Dec 31 12:03:00s -0:03:00 -
|
||||
|
||||
# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
|
||||
# Before and after 1989, we'll operate on local mean solar time.
|
||||
|
||||
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
Zone Asia/Riyadh89 3:07:04 - zzz 1989
|
||||
3:07:04 sol89 zzz 1990
|
||||
3:07:04 - zzz
|
||||
# For backward compatibility...
|
||||
Link Asia/Riyadh89 Mideast/Riyadh89
|
1104
commands/zoneinfo/southamerica
Normal file
1104
commands/zoneinfo/southamerica
Normal file
File diff suppressed because it is too large
Load diff
761
commands/zoneinfo/strftime.c
Normal file
761
commands/zoneinfo/strftime.c
Normal file
|
@ -0,0 +1,761 @@
|
|||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char elsieid[] = "@(#)strftime.c 7.75";
|
||||
/*
|
||||
** Based on the UCB version with the ID appearing below.
|
||||
** This is ANSIish only when "multibyte character == plain character".
|
||||
*/
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
#include "private.h"
|
||||
|
||||
/*
|
||||
** Copyright (c) 1989 The Regents of the University of California.
|
||||
** All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms are permitted
|
||||
** provided that the above copyright notice and this paragraph are
|
||||
** duplicated in all such forms and that any documentation,
|
||||
** advertising materials, and other materials related to such
|
||||
** distribution and use acknowledge that the software was developed
|
||||
** by the University of California, Berkeley. The name of the
|
||||
** University may not be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
** IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBC_SCCS
|
||||
#ifndef lint
|
||||
static const char sccsid[] = "@(#)strftime.c 5.4 (Berkeley) 3/14/89";
|
||||
#endif /* !defined lint */
|
||||
#endif /* !defined LIBC_SCCS */
|
||||
|
||||
#include "tzfile.h"
|
||||
#include "fcntl.h"
|
||||
#include "locale.h"
|
||||
|
||||
struct lc_time_T {
|
||||
const char * mon[MONSPERYEAR];
|
||||
const char * month[MONSPERYEAR];
|
||||
const char * wday[DAYSPERWEEK];
|
||||
const char * weekday[DAYSPERWEEK];
|
||||
const char * X_fmt;
|
||||
const char * x_fmt;
|
||||
const char * c_fmt;
|
||||
const char * am;
|
||||
const char * pm;
|
||||
const char * date_fmt;
|
||||
};
|
||||
|
||||
#ifdef LOCALE_HOME
|
||||
#include "sys/stat.h"
|
||||
static struct lc_time_T localebuf;
|
||||
static struct lc_time_T * _loc P((void));
|
||||
#define Locale _loc()
|
||||
#endif /* defined LOCALE_HOME */
|
||||
#ifndef LOCALE_HOME
|
||||
#define Locale (&C_time_locale)
|
||||
#endif /* !defined LOCALE_HOME */
|
||||
|
||||
static const struct lc_time_T C_time_locale = {
|
||||
{
|
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
|
||||
}, {
|
||||
"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"
|
||||
}, {
|
||||
"Sun", "Mon", "Tue", "Wed",
|
||||
"Thu", "Fri", "Sat"
|
||||
}, {
|
||||
"Sunday", "Monday", "Tuesday", "Wednesday",
|
||||
"Thursday", "Friday", "Saturday"
|
||||
},
|
||||
|
||||
/* X_fmt */
|
||||
"%H:%M:%S",
|
||||
|
||||
/*
|
||||
** x_fmt
|
||||
** C99 requires this format.
|
||||
** Using just numbers (as here) makes Quakers happier;
|
||||
** it's also compatible with SVR4.
|
||||
*/
|
||||
"%m/%d/%y",
|
||||
|
||||
/*
|
||||
** c_fmt
|
||||
** C99 requires this format.
|
||||
** Previously this code used "%D %X", but we now conform to C99.
|
||||
** Note that
|
||||
** "%a %b %d %H:%M:%S %Y"
|
||||
** is used by Solaris 2.3.
|
||||
*/
|
||||
"%a %b %e %T %Y",
|
||||
|
||||
/* am */
|
||||
"AM",
|
||||
|
||||
/* pm */
|
||||
"PM",
|
||||
|
||||
/* date_fmt */
|
||||
"%a %b %e %H:%M:%S %Z %Y"
|
||||
};
|
||||
|
||||
static char * _add P((const char *, char *, const char *));
|
||||
static char * _conv P((int, const char *, char *, const char *));
|
||||
static char * _fmt P((const char *, const struct tm *, char *, const char *,
|
||||
int *));
|
||||
static char * _yconv P((int, int, int, int, char *, const char *));
|
||||
|
||||
extern char * tzname[];
|
||||
|
||||
#ifndef YEAR_2000_NAME
|
||||
#define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS"
|
||||
#endif /* !defined YEAR_2000_NAME */
|
||||
|
||||
#define IN_NONE 0
|
||||
#define IN_SOME 1
|
||||
#define IN_THIS 2
|
||||
#define IN_ALL 3
|
||||
|
||||
size_t
|
||||
strftime(s, maxsize, format, t)
|
||||
char * const s;
|
||||
const size_t maxsize;
|
||||
const char * const format;
|
||||
const struct tm * const t;
|
||||
{
|
||||
char * p;
|
||||
int warn;
|
||||
|
||||
tzset();
|
||||
#ifdef LOCALE_HOME
|
||||
localebuf.mon[0] = 0;
|
||||
#endif /* defined LOCALE_HOME */
|
||||
warn = IN_NONE;
|
||||
p = _fmt(((format == NULL) ? "%c" : format), t, s, s + maxsize, &warn);
|
||||
#ifndef NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU
|
||||
if (warn != IN_NONE && getenv(YEAR_2000_NAME) != NULL) {
|
||||
(void) fprintf(stderr, "\n");
|
||||
if (format == NULL)
|
||||
(void) fprintf(stderr, "NULL strftime format ");
|
||||
else (void) fprintf(stderr, "strftime format \"%s\" ",
|
||||
format);
|
||||
(void) fprintf(stderr, "yields only two digits of years in ");
|
||||
if (warn == IN_SOME)
|
||||
(void) fprintf(stderr, "some locales");
|
||||
else if (warn == IN_THIS)
|
||||
(void) fprintf(stderr, "the current locale");
|
||||
else (void) fprintf(stderr, "all locales");
|
||||
(void) fprintf(stderr, "\n");
|
||||
}
|
||||
#endif /* !defined NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU */
|
||||
if (p == s + maxsize)
|
||||
return 0;
|
||||
*p = '\0';
|
||||
return p - s;
|
||||
}
|
||||
|
||||
static char *
|
||||
_fmt(format, t, pt, ptlim, warnp)
|
||||
const char * format;
|
||||
const struct tm * const t;
|
||||
char * pt;
|
||||
const char * const ptlim;
|
||||
int * warnp;
|
||||
{
|
||||
for ( ; *format; ++format) {
|
||||
if (*format == '%') {
|
||||
label:
|
||||
switch (*++format) {
|
||||
case '\0':
|
||||
--format;
|
||||
break;
|
||||
case 'A':
|
||||
pt = _add((t->tm_wday < 0 ||
|
||||
t->tm_wday >= DAYSPERWEEK) ?
|
||||
"?" : Locale->weekday[t->tm_wday],
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'a':
|
||||
pt = _add((t->tm_wday < 0 ||
|
||||
t->tm_wday >= DAYSPERWEEK) ?
|
||||
"?" : Locale->wday[t->tm_wday],
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'B':
|
||||
pt = _add((t->tm_mon < 0 ||
|
||||
t->tm_mon >= MONSPERYEAR) ?
|
||||
"?" : Locale->month[t->tm_mon],
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'b':
|
||||
case 'h':
|
||||
pt = _add((t->tm_mon < 0 ||
|
||||
t->tm_mon >= MONSPERYEAR) ?
|
||||
"?" : Locale->mon[t->tm_mon],
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'C':
|
||||
/*
|
||||
** %C used to do a...
|
||||
** _fmt("%a %b %e %X %Y", t);
|
||||
** ...whereas now POSIX 1003.2 calls for
|
||||
** something completely different.
|
||||
** (ado, 1993-05-24)
|
||||
*/
|
||||
pt = _yconv(t->tm_year, TM_YEAR_BASE, 1, 0,
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'c':
|
||||
{
|
||||
int warn2 = IN_SOME;
|
||||
|
||||
pt = _fmt(Locale->c_fmt, t, pt, ptlim, warnp);
|
||||
if (warn2 == IN_ALL)
|
||||
warn2 = IN_THIS;
|
||||
if (warn2 > *warnp)
|
||||
*warnp = warn2;
|
||||
}
|
||||
continue;
|
||||
case 'D':
|
||||
pt = _fmt("%m/%d/%y", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'd':
|
||||
pt = _conv(t->tm_mday, "%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'E':
|
||||
case 'O':
|
||||
/*
|
||||
** C99 locale modifiers.
|
||||
** The sequences
|
||||
** %Ec %EC %Ex %EX %Ey %EY
|
||||
** %Od %oe %OH %OI %Om %OM
|
||||
** %OS %Ou %OU %OV %Ow %OW %Oy
|
||||
** are supposed to provide alternate
|
||||
** representations.
|
||||
*/
|
||||
goto label;
|
||||
case 'e':
|
||||
pt = _conv(t->tm_mday, "%2d", pt, ptlim);
|
||||
continue;
|
||||
case 'F':
|
||||
pt = _fmt("%Y-%m-%d", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'H':
|
||||
pt = _conv(t->tm_hour, "%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'I':
|
||||
pt = _conv((t->tm_hour % 12) ?
|
||||
(t->tm_hour % 12) : 12,
|
||||
"%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'j':
|
||||
pt = _conv(t->tm_yday + 1, "%03d", pt, ptlim);
|
||||
continue;
|
||||
case 'k':
|
||||
/*
|
||||
** This used to be...
|
||||
** _conv(t->tm_hour % 12 ?
|
||||
** t->tm_hour % 12 : 12, 2, ' ');
|
||||
** ...and has been changed to the below to
|
||||
** match SunOS 4.1.1 and Arnold Robbins'
|
||||
** strftime version 3.0. That is, "%k" and
|
||||
** "%l" have been swapped.
|
||||
** (ado, 1993-05-24)
|
||||
*/
|
||||
pt = _conv(t->tm_hour, "%2d", pt, ptlim);
|
||||
continue;
|
||||
#ifdef KITCHEN_SINK
|
||||
case 'K':
|
||||
/*
|
||||
** After all this time, still unclaimed!
|
||||
*/
|
||||
pt = _add("kitchen sink", pt, ptlim);
|
||||
continue;
|
||||
#endif /* defined KITCHEN_SINK */
|
||||
case 'l':
|
||||
/*
|
||||
** This used to be...
|
||||
** _conv(t->tm_hour, 2, ' ');
|
||||
** ...and has been changed to the below to
|
||||
** match SunOS 4.1.1 and Arnold Robbin's
|
||||
** strftime version 3.0. That is, "%k" and
|
||||
** "%l" have been swapped.
|
||||
** (ado, 1993-05-24)
|
||||
*/
|
||||
pt = _conv((t->tm_hour % 12) ?
|
||||
(t->tm_hour % 12) : 12,
|
||||
"%2d", pt, ptlim);
|
||||
continue;
|
||||
case 'M':
|
||||
pt = _conv(t->tm_min, "%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'm':
|
||||
pt = _conv(t->tm_mon + 1, "%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'n':
|
||||
pt = _add("\n", pt, ptlim);
|
||||
continue;
|
||||
case 'p':
|
||||
pt = _add((t->tm_hour >= (HOURSPERDAY / 2)) ?
|
||||
Locale->pm :
|
||||
Locale->am,
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'R':
|
||||
pt = _fmt("%H:%M", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'r':
|
||||
pt = _fmt("%I:%M:%S %p", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'S':
|
||||
pt = _conv(t->tm_sec, "%02d", pt, ptlim);
|
||||
continue;
|
||||
case 's':
|
||||
{
|
||||
struct tm tm;
|
||||
char buf[INT_STRLEN_MAXIMUM(
|
||||
time_t) + 1];
|
||||
time_t mkt;
|
||||
|
||||
tm = *t;
|
||||
mkt = mktime(&tm);
|
||||
if (TYPE_SIGNED(time_t))
|
||||
(void) sprintf(buf, "%ld",
|
||||
(long) mkt);
|
||||
else (void) sprintf(buf, "%lu",
|
||||
(unsigned long) mkt);
|
||||
pt = _add(buf, pt, ptlim);
|
||||
}
|
||||
continue;
|
||||
case 'T':
|
||||
pt = _fmt("%H:%M:%S", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 't':
|
||||
pt = _add("\t", pt, ptlim);
|
||||
continue;
|
||||
case 'U':
|
||||
pt = _conv((t->tm_yday + DAYSPERWEEK -
|
||||
t->tm_wday) / DAYSPERWEEK,
|
||||
"%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'u':
|
||||
/*
|
||||
** From Arnold Robbins' strftime version 3.0:
|
||||
** "ISO 8601: Weekday as a decimal number
|
||||
** [1 (Monday) - 7]"
|
||||
** (ado, 1993-05-24)
|
||||
*/
|
||||
pt = _conv((t->tm_wday == 0) ?
|
||||
DAYSPERWEEK : t->tm_wday,
|
||||
"%d", pt, ptlim);
|
||||
continue;
|
||||
case 'V': /* ISO 8601 week number */
|
||||
case 'G': /* ISO 8601 year (four digits) */
|
||||
case 'g': /* ISO 8601 year (two digits) */
|
||||
/*
|
||||
** From Arnold Robbins' strftime version 3.0: "the week number of the
|
||||
** year (the first Monday as the first day of week 1) as a decimal number
|
||||
** (01-53)."
|
||||
** (ado, 1993-05-24)
|
||||
**
|
||||
** From "http://www.ft.uni-erlangen.de/~mskuhn/iso-time.html" by Markus Kuhn:
|
||||
** "Week 01 of a year is per definition the first week which has the
|
||||
** Thursday in this year, which is equivalent to the week which contains
|
||||
** the fourth day of January. In other words, the first week of a new year
|
||||
** is the week which has the majority of its days in the new year. Week 01
|
||||
** might also contain days from the previous year and the week before week
|
||||
** 01 of a year is the last week (52 or 53) of the previous year even if
|
||||
** it contains days from the new year. A week starts with Monday (day 1)
|
||||
** and ends with Sunday (day 7). For example, the first week of the year
|
||||
** 1997 lasts from 1996-12-30 to 1997-01-05..."
|
||||
** (ado, 1996-01-02)
|
||||
*/
|
||||
{
|
||||
int year;
|
||||
int base;
|
||||
int yday;
|
||||
int wday;
|
||||
int w;
|
||||
|
||||
year = t->tm_year;
|
||||
base = TM_YEAR_BASE;
|
||||
yday = t->tm_yday;
|
||||
wday = t->tm_wday;
|
||||
for ( ; ; ) {
|
||||
int len;
|
||||
int bot;
|
||||
int top;
|
||||
|
||||
len = isleap_sum(year, base) ?
|
||||
DAYSPERLYEAR :
|
||||
DAYSPERNYEAR;
|
||||
/*
|
||||
** What yday (-3 ... 3) does
|
||||
** the ISO year begin on?
|
||||
*/
|
||||
bot = ((yday + 11 - wday) %
|
||||
DAYSPERWEEK) - 3;
|
||||
/*
|
||||
** What yday does the NEXT
|
||||
** ISO year begin on?
|
||||
*/
|
||||
top = bot -
|
||||
(len % DAYSPERWEEK);
|
||||
if (top < -3)
|
||||
top += DAYSPERWEEK;
|
||||
top += len;
|
||||
if (yday >= top) {
|
||||
++base;
|
||||
w = 1;
|
||||
break;
|
||||
}
|
||||
if (yday >= bot) {
|
||||
w = 1 + ((yday - bot) /
|
||||
DAYSPERWEEK);
|
||||
break;
|
||||
}
|
||||
--base;
|
||||
yday += isleap_sum(year, base) ?
|
||||
DAYSPERLYEAR :
|
||||
DAYSPERNYEAR;
|
||||
}
|
||||
#ifdef XPG4_1994_04_09
|
||||
if ((w == 52 &&
|
||||
t->tm_mon == TM_JANUARY) ||
|
||||
(w == 1 &&
|
||||
t->tm_mon == TM_DECEMBER))
|
||||
w = 53;
|
||||
#endif /* defined XPG4_1994_04_09 */
|
||||
if (*format == 'V')
|
||||
pt = _conv(w, "%02d",
|
||||
pt, ptlim);
|
||||
else if (*format == 'g') {
|
||||
*warnp = IN_ALL;
|
||||
pt = _yconv(year, base, 0, 1,
|
||||
pt, ptlim);
|
||||
} else pt = _yconv(year, base, 1, 1,
|
||||
pt, ptlim);
|
||||
}
|
||||
continue;
|
||||
case 'v':
|
||||
/*
|
||||
** From Arnold Robbins' strftime version 3.0:
|
||||
** "date as dd-bbb-YYYY"
|
||||
** (ado, 1993-05-24)
|
||||
*/
|
||||
pt = _fmt("%e-%b-%Y", t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'W':
|
||||
pt = _conv((t->tm_yday + DAYSPERWEEK -
|
||||
(t->tm_wday ?
|
||||
(t->tm_wday - 1) :
|
||||
(DAYSPERWEEK - 1))) / DAYSPERWEEK,
|
||||
"%02d", pt, ptlim);
|
||||
continue;
|
||||
case 'w':
|
||||
pt = _conv(t->tm_wday, "%d", pt, ptlim);
|
||||
continue;
|
||||
case 'X':
|
||||
pt = _fmt(Locale->X_fmt, t, pt, ptlim, warnp);
|
||||
continue;
|
||||
case 'x':
|
||||
{
|
||||
int warn2 = IN_SOME;
|
||||
|
||||
pt = _fmt(Locale->x_fmt, t, pt, ptlim, &warn2);
|
||||
if (warn2 == IN_ALL)
|
||||
warn2 = IN_THIS;
|
||||
if (warn2 > *warnp)
|
||||
*warnp = warn2;
|
||||
}
|
||||
continue;
|
||||
case 'y':
|
||||
*warnp = IN_ALL;
|
||||
pt = _yconv(t->tm_year, TM_YEAR_BASE, 0, 1,
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'Y':
|
||||
pt = _yconv(t->tm_year, TM_YEAR_BASE, 1, 1,
|
||||
pt, ptlim);
|
||||
continue;
|
||||
case 'Z':
|
||||
#ifdef TM_ZONE
|
||||
if (t->TM_ZONE != NULL)
|
||||
pt = _add(t->TM_ZONE, pt, ptlim);
|
||||
else
|
||||
#endif /* defined TM_ZONE */
|
||||
if (t->tm_isdst >= 0)
|
||||
pt = _add(tzname[t->tm_isdst != 0],
|
||||
pt, ptlim);
|
||||
/*
|
||||
** C99 says that %Z must be replaced by the
|
||||
** empty string if the time zone is not
|
||||
** determinable.
|
||||
*/
|
||||
continue;
|
||||
case 'z':
|
||||
{
|
||||
int diff;
|
||||
char const * sign;
|
||||
|
||||
if (t->tm_isdst < 0)
|
||||
continue;
|
||||
#ifdef TM_GMTOFF
|
||||
diff = t->TM_GMTOFF;
|
||||
#else /* !defined TM_GMTOFF */
|
||||
/*
|
||||
** C99 says that the UTC offset must
|
||||
** be computed by looking only at
|
||||
** tm_isdst. This requirement is
|
||||
** incorrect, since it means the code
|
||||
** must rely on magic (in this case
|
||||
** altzone and timezone), and the
|
||||
** magic might not have the correct
|
||||
** offset. Doing things correctly is
|
||||
** tricky and requires disobeying C99;
|
||||
** see GNU C strftime for details.
|
||||
** For now, punt and conform to the
|
||||
** standard, even though it's incorrect.
|
||||
**
|
||||
** C99 says that %z must be replaced by the
|
||||
** empty string if the time zone is not
|
||||
** determinable, so output nothing if the
|
||||
** appropriate variables are not available.
|
||||
*/
|
||||
if (t->tm_isdst == 0)
|
||||
#ifdef USG_COMPAT
|
||||
diff = -timezone;
|
||||
#else /* !defined USG_COMPAT */
|
||||
continue;
|
||||
#endif /* !defined USG_COMPAT */
|
||||
else
|
||||
#ifdef ALTZONE
|
||||
diff = -altzone;
|
||||
#else /* !defined ALTZONE */
|
||||
continue;
|
||||
#endif /* !defined ALTZONE */
|
||||
#endif /* !defined TM_GMTOFF */
|
||||
if (diff < 0) {
|
||||
sign = "-";
|
||||
diff = -diff;
|
||||
} else sign = "+";
|
||||
pt = _add(sign, pt, ptlim);
|
||||
diff /= SECSPERMIN;
|
||||
diff = (diff / MINSPERHOUR) * 100 +
|
||||
(diff % MINSPERHOUR);
|
||||
pt = _conv(diff, "%04d", pt, ptlim);
|
||||
}
|
||||
continue;
|
||||
case '+':
|
||||
pt = _fmt(Locale->date_fmt, t, pt, ptlim,
|
||||
warnp);
|
||||
continue;
|
||||
case '%':
|
||||
/*
|
||||
** X311J/88-090 (4.12.3.5): if conversion char is
|
||||
** undefined, behavior is undefined. Print out the
|
||||
** character itself as printf(3) also does.
|
||||
*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pt == ptlim)
|
||||
break;
|
||||
*pt++ = *format;
|
||||
}
|
||||
return pt;
|
||||
}
|
||||
|
||||
static char *
|
||||
_conv(n, format, pt, ptlim)
|
||||
const int n;
|
||||
const char * const format;
|
||||
char * const pt;
|
||||
const char * const ptlim;
|
||||
{
|
||||
char buf[INT_STRLEN_MAXIMUM(int) + 1];
|
||||
|
||||
(void) sprintf(buf, format, n);
|
||||
return _add(buf, pt, ptlim);
|
||||
}
|
||||
|
||||
static char *
|
||||
_add(str, pt, ptlim)
|
||||
const char * str;
|
||||
char * pt;
|
||||
const char * const ptlim;
|
||||
{
|
||||
while (pt < ptlim && (*pt = *str++) != '\0')
|
||||
++pt;
|
||||
return pt;
|
||||
}
|
||||
|
||||
/*
|
||||
** POSIX and the C Standard are unclear or inconsistent about
|
||||
** what %C and %y do if the year is negative or exceeds 9999.
|
||||
** Use the convention that %C concatenated with %y yields the
|
||||
** same output as %Y, and that %Y contains at least 4 bytes,
|
||||
** with more only if necessary.
|
||||
*/
|
||||
|
||||
static char *
|
||||
_yconv(a, b, convert_top, convert_yy, pt, ptlim)
|
||||
const int a;
|
||||
const int b;
|
||||
const int convert_top;
|
||||
const int convert_yy;
|
||||
char * pt;
|
||||
const char * const ptlim;
|
||||
{
|
||||
register int lead;
|
||||
register int trail;
|
||||
|
||||
#define DIVISOR 100
|
||||
trail = a % DIVISOR + b % DIVISOR;
|
||||
lead = a / DIVISOR + b / DIVISOR + trail / DIVISOR;
|
||||
trail %= DIVISOR;
|
||||
if (trail < 0 && lead > 0) {
|
||||
trail += DIVISOR;
|
||||
--lead;
|
||||
} else if (lead < 0 && trail > 0) {
|
||||
trail -= DIVISOR;
|
||||
++lead;
|
||||
}
|
||||
if (convert_top) {
|
||||
if (lead == 0 && trail < 0)
|
||||
pt = _add("-0", pt, ptlim);
|
||||
else pt = _conv(lead, "%02d", pt, ptlim);
|
||||
}
|
||||
if (convert_yy)
|
||||
pt = _conv(((trail < 0) ? -trail : trail), "%02d", pt, ptlim);
|
||||
return pt;
|
||||
}
|
||||
|
||||
#ifdef LOCALE_HOME
|
||||
static struct lc_time_T *
|
||||
_loc P((void))
|
||||
{
|
||||
static const char locale_home[] = LOCALE_HOME;
|
||||
static const char lc_time[] = "LC_TIME";
|
||||
static char * locale_buf;
|
||||
|
||||
int fd;
|
||||
int oldsun; /* "...ain't got nothin' to do..." */
|
||||
char * lbuf;
|
||||
char * name;
|
||||
char * p;
|
||||
const char ** ap;
|
||||
const char * plim;
|
||||
char filename[FILENAME_MAX];
|
||||
struct stat st;
|
||||
size_t namesize;
|
||||
size_t bufsize;
|
||||
|
||||
/*
|
||||
** Use localebuf.mon[0] to signal whether locale is already set up.
|
||||
*/
|
||||
if (localebuf.mon[0])
|
||||
return &localebuf;
|
||||
name = setlocale(LC_TIME, (char *) NULL);
|
||||
if (name == NULL || *name == '\0')
|
||||
goto no_locale;
|
||||
/*
|
||||
** If the locale name is the same as our cache, use the cache.
|
||||
*/
|
||||
lbuf = locale_buf;
|
||||
if (lbuf != NULL && strcmp(name, lbuf) == 0) {
|
||||
p = lbuf;
|
||||
for (ap = (const char **) &localebuf;
|
||||
ap < (const char **) (&localebuf + 1);
|
||||
++ap)
|
||||
*ap = p += strlen(p) + 1;
|
||||
return &localebuf;
|
||||
}
|
||||
/*
|
||||
** Slurp the locale file into the cache.
|
||||
*/
|
||||
namesize = strlen(name) + 1;
|
||||
if (sizeof filename <
|
||||
((sizeof locale_home) + namesize + (sizeof lc_time)))
|
||||
goto no_locale;
|
||||
oldsun = 0;
|
||||
(void) sprintf(filename, "%s/%s/%s", locale_home, name, lc_time);
|
||||
fd = open(filename, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
/*
|
||||
** Old Sun systems have a different naming and data convention.
|
||||
*/
|
||||
oldsun = 1;
|
||||
(void) sprintf(filename, "%s/%s/%s", locale_home,
|
||||
lc_time, name);
|
||||
fd = open(filename, O_RDONLY);
|
||||
if (fd < 0)
|
||||
goto no_locale;
|
||||
}
|
||||
if (fstat(fd, &st) != 0)
|
||||
goto bad_locale;
|
||||
if (st.st_size <= 0)
|
||||
goto bad_locale;
|
||||
bufsize = namesize + st.st_size;
|
||||
locale_buf = NULL;
|
||||
lbuf = (lbuf == NULL) ? malloc(bufsize) : realloc(lbuf, bufsize);
|
||||
if (lbuf == NULL)
|
||||
goto bad_locale;
|
||||
(void) strcpy(lbuf, name);
|
||||
p = lbuf + namesize;
|
||||
plim = p + st.st_size;
|
||||
if (read(fd, p, (size_t) st.st_size) != st.st_size)
|
||||
goto bad_lbuf;
|
||||
if (close(fd) != 0)
|
||||
goto bad_lbuf;
|
||||
/*
|
||||
** Parse the locale file into localebuf.
|
||||
*/
|
||||
if (plim[-1] != '\n')
|
||||
goto bad_lbuf;
|
||||
for (ap = (const char **) &localebuf;
|
||||
ap < (const char **) (&localebuf + 1);
|
||||
++ap) {
|
||||
if (p == plim)
|
||||
goto bad_lbuf;
|
||||
*ap = p;
|
||||
while (*p != '\n')
|
||||
++p;
|
||||
*p++ = '\0';
|
||||
}
|
||||
if (oldsun) {
|
||||
/*
|
||||
** SunOS 4 used an obsolescent format; see localdtconv(3).
|
||||
** c_fmt had the ``short format for dates and times together''
|
||||
** (SunOS 4 date, "%a %b %e %T %Z %Y" in the C locale);
|
||||
** date_fmt had the ``long format for dates''
|
||||
** (SunOS 4 strftime %C, "%A, %B %e, %Y" in the C locale).
|
||||
** Discard the latter in favor of the former.
|
||||
*/
|
||||
localebuf.date_fmt = localebuf.c_fmt;
|
||||
}
|
||||
/*
|
||||
** Record the successful parse in the cache.
|
||||
*/
|
||||
locale_buf = lbuf;
|
||||
|
||||
return &localebuf;
|
||||
|
||||
bad_lbuf:
|
||||
free(lbuf);
|
||||
bad_locale:
|
||||
(void) close(fd);
|
||||
no_locale:
|
||||
localebuf = C_time_locale;
|
||||
locale_buf = NULL;
|
||||
return &localebuf;
|
||||
}
|
||||
#endif /* defined LOCALE_HOME */
|
36
commands/zoneinfo/systemv
Normal file
36
commands/zoneinfo/systemv
Normal file
|
@ -0,0 +1,36 @@
|
|||
# @(#)systemv 8.1
|
||||
|
||||
# Old rules, should the need arise.
|
||||
# No attempt is made to handle Newfoundland, since it cannot be expressed
|
||||
# using the System V "TZ" scheme (half-hour offset), or anything outside
|
||||
# North America (no support for non-standard DST start/end dates), nor
|
||||
# the changes in the DST rules in the US after 1976 (which occurred after
|
||||
# the old rules were written).
|
||||
#
|
||||
# If you need the old rules, uncomment ## lines.
|
||||
# Compile this *without* leap second correction for true conformance.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV min 1973 - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1974 only - Jan 6 2:00 1:00 D
|
||||
Rule SystemV 1974 only - Nov lastSun 2:00 0 S
|
||||
Rule SystemV 1975 only - Feb 23 2:00 1:00 D
|
||||
Rule SystemV 1975 only - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV 1976 max - Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone SystemV/AST4ADT -4:00 SystemV A%sT
|
||||
## Zone SystemV/EST5EDT -5:00 SystemV E%sT
|
||||
## Zone SystemV/CST6CDT -6:00 SystemV C%sT
|
||||
## Zone SystemV/MST7MDT -7:00 SystemV M%sT
|
||||
## Zone SystemV/PST8PDT -8:00 SystemV P%sT
|
||||
## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
|
||||
## Zone SystemV/AST4 -4:00 - AST
|
||||
## Zone SystemV/EST5 -5:00 - EST
|
||||
## Zone SystemV/CST6 -6:00 - CST
|
||||
## Zone SystemV/MST7 -7:00 - MST
|
||||
## Zone SystemV/PST8 -8:00 - PST
|
||||
## Zone SystemV/YST9 -9:00 - YST
|
||||
## Zone SystemV/HST10 -10:00 - HST
|
121
commands/zoneinfo/time2posix.3
Normal file
121
commands/zoneinfo/time2posix.3
Normal file
|
@ -0,0 +1,121 @@
|
|||
.TH TIME2POSIX 3
|
||||
.SH NAME
|
||||
time2posix, posix2time \- convert seconds since the Epoch
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <sys/types.h>
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B time_t time2posix(t)
|
||||
.B time_t t
|
||||
.PP
|
||||
.B time_t posix2time(t)
|
||||
.B time_t t
|
||||
.PP
|
||||
.B cc ... -ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
IEEE Standard 1003.1
|
||||
(POSIX)
|
||||
legislates that a time_t value of
|
||||
536457599 shall correspond to "Wed Dec 31 23:59:59 UTC 1986."
|
||||
This effectively implies that POSIX time_t's cannot include leap
|
||||
seconds and,
|
||||
therefore,
|
||||
that the system time must be adjusted as each leap occurs.
|
||||
.PP
|
||||
If the time package is configured with leap-second support
|
||||
enabled,
|
||||
however,
|
||||
no such adjustment is needed and
|
||||
time_t values continue to increase over leap events
|
||||
(as a true `seconds since...' value).
|
||||
This means that these values will differ from those required by POSIX
|
||||
by the net number of leap seconds inserted since the Epoch.
|
||||
.PP
|
||||
Typically this is not a problem as the type time_t is intended
|
||||
to be
|
||||
(mostly)
|
||||
opaque\(emtime_t values should only be obtained-from and
|
||||
passed-to functions such as
|
||||
.IR time(2) ,
|
||||
.IR localtime(3) ,
|
||||
.IR mktime(3) ,
|
||||
and
|
||||
.IR difftime(3) .
|
||||
However,
|
||||
POSIX gives an arithmetic
|
||||
expression for directly computing a time_t value from a given date/time,
|
||||
and the same relationship is assumed by some
|
||||
(usually older)
|
||||
applications.
|
||||
Any programs creating/dissecting time_t's
|
||||
using such a relationship will typically not handle intervals
|
||||
over leap seconds correctly.
|
||||
.PP
|
||||
The
|
||||
.I time2posix
|
||||
and
|
||||
.I posix2time
|
||||
functions are provided to address this time_t mismatch by converting
|
||||
between local time_t values and their POSIX equivalents.
|
||||
This is done by accounting for the number of time-base changes that
|
||||
would have taken place on a POSIX system as leap seconds were inserted
|
||||
or deleted.
|
||||
These converted values can then be used in lieu of correcting the older
|
||||
applications,
|
||||
or when communicating with POSIX-compliant systems.
|
||||
.PP
|
||||
.I Time2posix
|
||||
is single-valued.
|
||||
That is,
|
||||
every local time_t
|
||||
corresponds to a single POSIX time_t.
|
||||
.I Posix2time
|
||||
is less well-behaved:
|
||||
for a positive leap second hit the result is not unique,
|
||||
and for a negative leap second hit the corresponding
|
||||
POSIX time_t doesn't exist so an adjacent value is returned.
|
||||
Both of these are good indicators of the inferiority of the
|
||||
POSIX representation.
|
||||
.PP
|
||||
The following table summarizes the relationship between a time
|
||||
T and it's conversion to,
|
||||
and back from,
|
||||
the POSIX representation over the leap second inserted at the end of June,
|
||||
1993.
|
||||
.nf
|
||||
.ta \w'93/06/30 'u +\w'23:59:59 'u +\w'A+0 'u +\w'X=time2posix(T) 'u
|
||||
DATE TIME T X=time2posix(T) posix2time(X)
|
||||
93/06/30 23:59:59 A+0 B+0 A+0
|
||||
93/06/30 23:59:60 A+1 B+1 A+1 or A+2
|
||||
93/07/01 00:00:00 A+2 B+1 A+1 or A+2
|
||||
93/07/01 00:00:01 A+3 B+2 A+3
|
||||
|
||||
A leap second deletion would look like...
|
||||
|
||||
DATE TIME T X=time2posix(T) posix2time(X)
|
||||
??/06/30 23:59:58 A+0 B+0 A+0
|
||||
??/07/01 00:00:00 A+1 B+2 A+1
|
||||
??/07/01 00:00:01 A+2 B+3 A+2
|
||||
.sp
|
||||
.ce
|
||||
[Note: posix2time(B+1) => A+0 or A+1]
|
||||
.fi
|
||||
.PP
|
||||
If leap-second support is not enabled,
|
||||
local time_t's and
|
||||
POSIX time_t's are equivalent,
|
||||
and both
|
||||
.I time2posix
|
||||
and
|
||||
.I posix2time
|
||||
degenerate to the identity function.
|
||||
.SH SEE ALSO
|
||||
difftime(3),
|
||||
localtime(3),
|
||||
mktime(3),
|
||||
time(2)
|
||||
.\" @(#)time2posix.3 7.8
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 1996-06-05 by Arthur David Olson.
|
83
commands/zoneinfo/time2posix.3.txt
Normal file
83
commands/zoneinfo/time2posix.3.txt
Normal file
|
@ -0,0 +1,83 @@
|
|||
NAME
|
||||
|
||||
time2posix, posix2time - convert seconds since the Epoch
|
||||
|
||||
SYNOPSIS
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
time_t time2posix(t)
|
||||
time_t t
|
||||
|
||||
time_t posix2time(t)
|
||||
time_t t
|
||||
|
||||
cc ... -ltz
|
||||
|
||||
DESCRIPTION
|
||||
IEEE Standard 1003.1 (POSIX) legislates that a time_t value
|
||||
of 536457599 shall correspond to "Wed Dec 31 23:59:59 UTC
|
||||
1986." This effectively implies that POSIX time_t's cannot
|
||||
include leap seconds and, therefore, that the system time
|
||||
must be adjusted as each leap occurs.
|
||||
|
||||
If the time package is configured with leap-second support
|
||||
enabled, however, no such adjustment is needed and time_t
|
||||
values continue to increase over leap events (as a true
|
||||
`seconds since...' value). This means that these values
|
||||
will differ from those required by POSIX by the net number
|
||||
of leap seconds inserted since the Epoch.
|
||||
|
||||
Typically this is not a problem as the type time_t is
|
||||
intended to be (mostly) opaque-time_t values should only be
|
||||
obtained-from and passed-to functions such as time(2),
|
||||
localtime(3), mktime(3), and difftime(3). However, POSIX
|
||||
gives an arithmetic expression for directly computing a
|
||||
time_t value from a given date/time, and the same
|
||||
relationship is assumed by some (usually older)
|
||||
applications. Any programs creating/dissecting time_t's
|
||||
using such a relationship will typically not handle
|
||||
intervals over leap seconds correctly.
|
||||
|
||||
The time2posix and posix2time functions are provided to
|
||||
address this time_t mismatch by converting between local
|
||||
time_t values and their POSIX equivalents. This is done by
|
||||
accounting for the number of time-base changes that would
|
||||
have taken place on a POSIX system as leap seconds were
|
||||
inserted or deleted. These converted values can then be
|
||||
used in lieu of correcting the older applications, or when
|
||||
communicating with POSIX-compliant systems.
|
||||
|
||||
Time2posix is single-valued. That is, every local time_t
|
||||
corresponds to a single POSIX time_t. Posix2time is less
|
||||
well-behaved: for a positive leap second hit the result is
|
||||
not unique, and for a negative leap second hit the
|
||||
corresponding POSIX time_t doesn't exist so an adjacent
|
||||
value is returned. Both of these are good indicators of the
|
||||
inferiority of the POSIX representation.
|
||||
|
||||
The following table summarizes the relationship between a
|
||||
time T and it's conversion to, and back from, the POSIX
|
||||
representation over the leap second inserted at the end of
|
||||
June, 1993.
|
||||
DATE TIME T X=time2posix(T) posix2time(X)
|
||||
93/06/30 23:59:59 A+0 B+0 A+0
|
||||
93/06/30 23:59:60 A+1 B+1 A+1 or A+2
|
||||
93/07/01 00:00:00 A+2 B+1 A+1 or A+2
|
||||
93/07/01 00:00:01 A+3 B+2 A+3
|
||||
|
||||
A leap second deletion would look like...
|
||||
|
||||
DATE TIME T X=time2posix(T) posix2time(X)
|
||||
??/06/30 23:59:58 A+0 B+0 A+0
|
||||
??/07/01 00:00:00 A+1 B+2 A+1
|
||||
??/07/01 00:00:01 A+2 B+3 A+2
|
||||
|
||||
[Note: posix2time(B+1) => A+0 or A+1]
|
||||
|
||||
If leap-second support is not enabled, local time_t's and
|
||||
POSIX time_t's are equivalent, and both time2posix and
|
||||
posix2time degenerate to the identity function.
|
||||
|
||||
SEE ALSO
|
||||
difftime(3), localtime(3), mktime(3), time(2)
|
278
commands/zoneinfo/tz-art.htm
Normal file
278
commands/zoneinfo/tz-art.htm
Normal file
|
@ -0,0 +1,278 @@
|
|||
<?xml version="1.0" encoding="US-ASCII"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' />
|
||||
<title>Time and the Arts</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Time and the Arts</h1>
|
||||
<address>
|
||||
@(#)tz-art.htm 7.59
|
||||
</address>
|
||||
<p>
|
||||
Please send corrections to this web page to the
|
||||
<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>.</p>
|
||||
<p>
|
||||
See also <a href="tz-link.htm">Sources for Time Zone and Daylight Saving Time Data</a>.</p>
|
||||
<hr />
|
||||
<p>
|
||||
Data on recordings of "Save That Time," Russ Long, Serrob Publishing, BMI:</p>
|
||||
<table>
|
||||
<tr><td>Artist</td><td>Karrin Allyson</td></tr>
|
||||
<tr><td>CD</td><td>I Didn't Know About You</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1993</td></tr>
|
||||
<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr>
|
||||
<tr><td>ID</td><td>CCD-4543</td></tr>
|
||||
<tr><td>Track Time</td><td>3:44</td></tr>
|
||||
<tr><td>Personnel</td><td>Karrin Allyson, vocal;
|
||||
Russ Long, piano;
|
||||
Gerald Spaits, bass;
|
||||
Todd Strait, drums</td></tr>
|
||||
<tr><td>Notes</td><td>CD notes "additional lyric by Karrin Allyson;
|
||||
arranged by Russ Long and Karrin Allyson"</td></tr>
|
||||
<tr><td>ADO Rating</td><td>1 star</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A1fdovw9ta92k">AMG Rating</a></td><td>4 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3.5 stars</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Kevin Mahogany</td></tr>
|
||||
<tr><td>CD</td><td>Double Rainbow</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1993</td></tr>
|
||||
<tr><td>Label</td><td>Enja Records</td></tr>
|
||||
<tr><td>ID</td><td>ENJ-7097 2</td></tr>
|
||||
<tr><td>Track Time</td><td>6:27</td></tr>
|
||||
<tr><td>Personnel</td><td>Kevin Mahogany, vocal;
|
||||
Kenny Barron, piano;
|
||||
Ray Drummond, bass;
|
||||
Ralph Moore, tenor saxophone;
|
||||
Lewis Nash, drums</td></tr>
|
||||
<tr><td>ADO Rating</td><td>1.5 stars</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Akikbikzjbb19">AMG Rating</a></td><td>3 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Joe Williams</td></tr>
|
||||
<tr><td>CD</td><td>Here's to Life</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1994</td></tr>
|
||||
<tr><td>Label</td><td>Telarc International Corporation</td></tr>
|
||||
<tr><td>ID</td><td>CD-83357</td></tr>
|
||||
<tr><td>Track Time</td><td>3:58</td></tr>
|
||||
<tr><td>Personnel</td><td>Joe Williams, vocal
|
||||
The Robert Farnon [39 piece] Orchestra</td></tr>
|
||||
<tr><td>Notes</td><td>This CD is also available as part of a 3-CD package from
|
||||
Telarc, "Triple Play" (CD-83461)</td></tr>
|
||||
<tr><td>ADO Rating</td><td>black dot</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Amyyvad6kt8w1">AMG Rating</a></td><td>2 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Charles Fambrough</td></tr>
|
||||
<tr><td>CD</td><td>Keeper of the Spirit</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1995</td></tr>
|
||||
<tr><td>Label</td><td>AudioQuest Music</td></tr>
|
||||
<tr><td>ID</td><td>AQ-CD1033</td></tr>
|
||||
<tr><td>Track Time</td><td>7:07</td></tr>
|
||||
<tr><td>Personnel</td><td>Charles Fambrough, bass;
|
||||
Joel Levine, tenor recorder;
|
||||
Edward Simon, piano;
|
||||
Lenny White, drums;
|
||||
Marion Simon, percussion</td></tr>
|
||||
<tr><td>Notes</td><td>On-line information and samples available at
|
||||
<a href="http://wwmusic.com/~music/audioq/rel/1033.html">http://wwmusic.com/~music/audioq/rel/1033.html</a></td></tr>
|
||||
<tr><td>ADO Rating</td><td>2 stars</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A5rkcikcjbb89">AMG Rating</a></td><td>unrated</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
|
||||
</table>
|
||||
<hr />
|
||||
<p>Also of note:</p>
|
||||
<table>
|
||||
<tr><td>Artist</td><td>Holly Cole Trio</td></tr>
|
||||
<tr><td>CD</td><td>Blame It On My Youth</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1992</td></tr>
|
||||
<tr><td>Label</td><td>Manhattan</td></tr>
|
||||
<tr><td>ID</td><td>CDP 7 97349 2</td></tr>
|
||||
<tr><td>Total Time</td><td>37:45</td></tr>
|
||||
<tr><td>Personnel</td><td>Holly Cole, voice;
|
||||
Aaron Davis, piano;
|
||||
David Piltch, string bass</td></tr>
|
||||
<tr><td>Notes</td><td>Lyrical reference to "Eastern Standard Time" in
|
||||
Tom Waits' "Purple Avenue"</td></tr>
|
||||
<tr><td>ADO Rating</td><td>2.5 stars</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A3a9ds37ya3dg">AMG Rating</a></td><td>3 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>unrated</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Milt Hinton</td></tr>
|
||||
<tr><td>CD</td><td>Old Man Time</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1990</td></tr>
|
||||
<tr><td>Label</td><td>Chiaroscuro</td></tr>
|
||||
<tr><td>ID</td><td>CR(D) 310</td></tr>
|
||||
<tr><td>Total Time</td><td>149:38 (two CDs)</td></tr>
|
||||
<tr><td>Personnel</td><td>Milt Hinton, bass;
|
||||
Doc Cheatham, Dizzy Gillespie, Clark Terry, trumpet;
|
||||
Al Grey, trombone;
|
||||
Eddie Barefield, Joe Camel (Flip Phillips), Buddy Tate,
|
||||
clarinet and saxophone;
|
||||
John Bunch, Red Richards, Norman Simmons, Derek Smith,
|
||||
Ralph Sutton, piano;
|
||||
Danny Barker, Al Casey, guitar;
|
||||
Gus Johnson, Gerryck King, Bob Rosengarden, Jackie Williams,
|
||||
drums;
|
||||
Lionel Hampton, vibraphone;
|
||||
Cab Calloway, Joe Williams, vocal;
|
||||
Buck Clayton, arrangements</td></tr>
|
||||
<tr><td>Notes</td><td>tunes include Old Man Time, Time After Time,
|
||||
Sometimes I'm Happy,
|
||||
A Hot Time in the Old Town Tonight,
|
||||
Four or Five Times, Now's the Time,
|
||||
Time on My Hands, This Time It's Us,
|
||||
and Good Time Charlie
|
||||
On-line samples available at
|
||||
<a href="http://www.chiaroscurojazz.com/albuminfo.php4?albumid=49">http://www.chiaroscurojazz.com/albuminfo.php3?albumid=49</a></td></tr>
|
||||
<tr><td>ADO Rating</td><td>3 stars</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A1cbyxdab8ola">AMG Rating</a></td><td>4.5 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Alan Broadbent</td></tr>
|
||||
<tr><td>CD</td><td>Pacific Standard Time</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1995</td></tr>
|
||||
<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr>
|
||||
<tr><td>ID</td><td>CCD-4664</td></tr>
|
||||
<tr><td>Total Time</td><td>62:42</td></tr>
|
||||
<tr><td>Personnel</td><td>Alan Broadbent, piano;
|
||||
Putter Smith, Bass;
|
||||
Frank Gibson, Jr., drums</td></tr>
|
||||
<tr><td>Notes</td><td>The CD cover features an analemma for equation-of-time fans</td></tr>
|
||||
<tr><td>ADO Rating</td><td>1 star</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Asl8zefuk8gfo">AMG Rating</a></td><td>4 stars</td></tr>
|
||||
<tr><td>Penguin Rating</td><td>3.5 stars</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Anthony Braxton/Richard Teitelbaum</td></tr>
|
||||
<tr><td>CD</td><td>Silence/Time Zones</td></tr>
|
||||
<tr><td>Copyright Date</td><td>1996</td></tr>
|
||||
<tr><td>Label</td><td>Black Lion</td></tr>
|
||||
<tr><td>ID</td><td>BLCD 760221</td></tr>
|
||||
<tr><td>Total Time</td><td>72:58</td></tr>
|
||||
<tr><td>Personnel</td><td>Anthony Braxton, sopranino and alto saxophones,
|
||||
contrebasse clarinet, miscellaneous instruments;
|
||||
Leo Smith, trumpet and miscellaneous instruments;
|
||||
Leroy Jenkins, violin and miscellaneous instruments;
|
||||
Richard Teitelbaum, modular moog and micromoog synthesizer</td></tr>
|
||||
<tr><td>ADO Rating</td><td>black dot</td></tr>
|
||||
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A5bkvu3xjan1k">AMG Rating</a></td><td>unrated</td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Artist</td><td>Jules Verne</td></tr>
|
||||
<tr><td>Book</td><td>Le Tour du Monde en Quatre-Vingts Jours
|
||||
(Around the World in Eighty Days)</td></tr>
|
||||
<tr><td>Notes</td><td>Wall-clock time plays a central role in the plot.
|
||||
European readers of the 1870s clearly held the U.S. press in
|
||||
deep contempt; the protagonists cross the U.S. without once
|
||||
reading a paper.
|
||||
An on-line French-language version of the book
|
||||
"with illustrations from the original 1873 French-language edition"
|
||||
is available at
|
||||
<a href="http://fourmilab.ch/etexts/www/tdm80j">http://fourmilab.ch/etexts/www/tdm80j</a>
|
||||
An on-line English-language translation of the book is available at
|
||||
<a href="http://www.literature.org/Works/Jules-Verne/eighty">http://www.literature.org/Works/Jules-Verne/eighty</a></td></tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr><td>Film</td><td>Bell Science - About Time</td></tr>
|
||||
<tr><td>Notes</td><td>The Frank Baxter/Richard Deacon extravaganza.
|
||||
Information is available at
|
||||
<a href="http://www.videoflicks.com/titles/1035/1035893.htm">http://www.videoflicks.com/titles/1035/1035893.htm</a></td></tr>
|
||||
</table>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
An episode of "The Adventures of Superman" entitled "The Mysterious
|
||||
Cube," first aired 1958-02-24, had Superman convincing the controllers
|
||||
of WWV to broadcast time signals five minutes ahead of actual time;
|
||||
doing so got a crook trying to beat the statute of limitations to
|
||||
emerge a bit too early from the titular enclosure.
|
||||
</li>
|
||||
<li>
|
||||
The 1960s ITC television series "The Prisoner" included an episode
|
||||
entitled "The Chimes of Big Ben" in which our protagonist tumbled to
|
||||
the fraudulent nature of a Poland-to-England escape upon hearing "Big
|
||||
Ben" chiming on Polish local time.
|
||||
</li>
|
||||
<li>
|
||||
The series "Seinfeld" included an episode entitled "The Susie," first
|
||||
broadcast 1997-02-13, in which Kramer decides that daylight saving time
|
||||
isn't coming fast enough, so he sets his watch ahead an hour.
|
||||
</li>
|
||||
<li>
|
||||
The syndicated comic strip "Dilbert" featured an all-too-rare example of
|
||||
time zone humor on 1998-03-14.
|
||||
</li>
|
||||
<li>
|
||||
Surrealist artist Guy Billout's work "Date Line" appeared on page 103
|
||||
of the 1999-11 Atlantic Monthly.
|
||||
</li>
|
||||
<li>
|
||||
"Gloom, Gloom, Go Away" by Walter Kirn appeared on page 106 of Time
|
||||
Magazine's 2002-11-11 issue; among other things, it proposed
|
||||
year-round DST as a way of lessening wintertime despair.
|
||||
</li>
|
||||
<li>
|
||||
The "20 Hours in America" episode of "The West Wing," first aired 2002-09-25,
|
||||
saw White House staffers stranded in Indiana; they thought they had time to
|
||||
catch Air Force One but were done in by intra-Indiana local time changes.
|
||||
</li>
|
||||
<li>
|
||||
"In what time zone would you find New York City?" was a $200 question on
|
||||
the 1999-11-13 United States airing of "Who Wants to Be a Millionaire?"
|
||||
"In 1883, what industry led the movement to divide the U.S. into four time
|
||||
zones?" was a $32,000 question on the 2001-05-23 United States airing of
|
||||
"Who Wants to Be a Millionaire?" At this rate, the million-dollar time-zone
|
||||
question should have been asked 2002-06-04.
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
"We're been using the five-cent nickle in this country since 1492.
|
||||
Now that's pretty near 100 years, daylight savings [sic]."
|
||||
(Groucho Marx as Captain Spaulding in "Animal Crackers", 1930,
|
||||
as noted by Will Fitzerald)
|
||||
</li>
|
||||
<li>
|
||||
"Good news."
|
||||
"What did they do? Extend Daylight Saving Time year round?"
|
||||
(Professional tanner George Hamilton, in dialog from a
|
||||
May, 1999 episode of the syndicated television series "Baywatch")
|
||||
</li>
|
||||
<li>
|
||||
"A fundamental belief held by Americans is that if you are on land, you
|
||||
cannot be killed by a fish...So most Americans remain on land, believing
|
||||
they're safe. Unfortunately, this belief—like so many myths, such as that
|
||||
there's a reason for 'Daylight Saving Time'—is false."
|
||||
(Dave Barry column, 2000-07-02)
|
||||
</li>
|
||||
<li>
|
||||
"I once had sex for an hour and five minutes, but that was on the day
|
||||
when you turn the clocks ahead."
|
||||
(Garry Shandling, 52nd Annual Emmys, 2000-09-10)
|
||||
</li>
|
||||
<li>
|
||||
"Would it impress you if I told you I invented Daylight Savings Time?"
|
||||
("Sahjhan" to "Lilah" in dialog from the "Loyalty" episode of "Angel,"
|
||||
originally aired 2002-02-25)
|
||||
</li>
|
||||
<li>
|
||||
"I thought you said Tulsa was a three hour flight."
|
||||
"Well, you're forgetting about the time difference."
|
||||
("Chandler" and "Joey" in dialog from the episode of "Friends" first
|
||||
aired 2002-12-05)
|
||||
</li>
|
||||
<li>
|
||||
"Is that a pertinent fact,
|
||||
or are you trying to dazzle me with your command of time zones?"
|
||||
(Kelsey Grammer as "Frasier Crane")
|
||||
</li>
|
||||
<li>
|
||||
"Don't worry about the world coming to an end today.
|
||||
It is already tomorrow in Australia."
|
||||
(Charles M. Schulz, provided by Steve Summit)
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
589
commands/zoneinfo/tz-link.htm
Normal file
589
commands/zoneinfo/tz-link.htm
Normal file
|
@ -0,0 +1,589 @@
|
|||
<?xml version="1.0" encoding="US-ASCII"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>Sources for Time Zone and Daylight Saving Time Data</title>
|
||||
<link rel="schema.DC" href="http://purl.org/DC/elements/1.1/" />
|
||||
<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' />
|
||||
<meta name="DC.Creator" content="Eggert, Paul" />
|
||||
<meta name="DC.Contributor" content="Olson, Arthur David" />
|
||||
<meta name="DC.Date" content="2006-01-20" />
|
||||
<meta name="DC.Description"
|
||||
content="Sources of information about time zones and daylight saving time" />
|
||||
<meta name="DC.Identifier" content="http://www.twinsun.com/tz/tz-link.htm" />
|
||||
<meta name="Keywords"
|
||||
content="database,daylight saving,DST,time zone,timezone,tz,zoneinfo" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sources for Time Zone and Daylight Saving Time Data</h1>
|
||||
<address>
|
||||
@(#)tz-link.htm 7.54
|
||||
</address>
|
||||
<p>
|
||||
Please send corrections to this web page to the
|
||||
<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>.</p>
|
||||
<h2>The <code>tz</code> database</h2>
|
||||
<p>
|
||||
The public-domain time zone database contains code and data
|
||||
that represent the history of local time
|
||||
for many representative locations around the globe.
|
||||
It is updated periodically to reflect changes made by political bodies
|
||||
to <a href="http://en.wikipedia.org/wiki/Time_zone">time zone</a>
|
||||
boundaries, <a
|
||||
href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time"><abbr
|
||||
title="Coordinated Universal Time">UTC</abbr></a> offsets, and
|
||||
<a href="http://en.wikipedia.org/wiki/Daylight_saving">daylight-saving</a>
|
||||
rules.
|
||||
This database (often called <code>tz</code> or <code>zoneinfo</code>)
|
||||
is used by several implementations,
|
||||
including
|
||||
<a href="http://www.gnu.org/software/libc/">the
|
||||
<abbr title="GNU's Not Unix">GNU</abbr>
|
||||
C Library</a> used in
|
||||
<a href="http://www.linux.org/"><abbr>GNU</abbr>/Linux</a>,
|
||||
<a href="http://www.freebsd.org/">FreeBSD</a>,
|
||||
<a href="http://www.netbsd.org/">NetBSD</a>,
|
||||
<a href="http://www.openbsd.org/">OpenBSD</a>,
|
||||
<a href="http://www.cygwin.com/">Cygwin</a>,
|
||||
<a href="http://www.delorie.com/djgpp/"><abbr
|
||||
title="DJ's GNU Programming Platform">DJGPP</abbr></a>,
|
||||
<a href="http://www.hp.com/products1/unix/operating/">HP-UX</a>,
|
||||
<a href="http://www.sgi.com/developers/technology/irix/">IRIX</a>,
|
||||
<a href="http://www.apple.com/macosx/">Mac OS X</a>,
|
||||
<a href="http://h71000.www7.hp.com/">OpenVMS</a>,
|
||||
<a href="http://www.sun.com/software/solaris/">Solaris</a>,
|
||||
<a href="http://h30097.www3.hp.com/">Tru64</a>, and
|
||||
<a href="http://www.sco.com/products/unixware/">UnixWare</a>.</p>
|
||||
<p>
|
||||
Each location in the database represents a national region where all
|
||||
clocks keeping local time have agreed since 1970.
|
||||
Locations are identified by continent or ocean and then by the name of
|
||||
the location, which is typically the largest city within the region.
|
||||
For example, <code>America/New_York</code>
|
||||
represents most of the <abbr title="United States">US</abbr> eastern time zone;
|
||||
<code>America/Phoenix</code> represents most of Arizona, which
|
||||
uses mountain time without daylight saving time (<abbr
|
||||
title="daylight saving time">DST</abbr>);
|
||||
<code>America/Detroit</code> represents most of Michigan, which uses
|
||||
eastern time but with different <abbr>DST</abbr> rules in 1975;
|
||||
and other entries represent smaller regions like Starke County,
|
||||
Indiana, which switched from central to eastern time in 1991
|
||||
and switched back in 2006.
|
||||
To use the database on an extended <a
|
||||
href="http://en.wikipedia.org/wiki/POSIX"><abbr
|
||||
title="Portable Operating System Interface">POSIX</abbr></a>
|
||||
implementation set the <code>TZ</code> environment variable to
|
||||
the location's full name, e.g., <code>TZ="America/New_York"</code>.</p>
|
||||
<p>
|
||||
In the <code>tz</code> database's
|
||||
<a href="ftp://elsie.nci.nih.gov/pub/"><abbr
|
||||
title="File Transfer Protocol">FTP</abbr> distribution</a>
|
||||
the code is in the file <code>tzcode<var>C</var>.tar.gz</code>,
|
||||
where <code><var>C</var></code> is the code's version;
|
||||
similarly, the data are in <code>tzdata<var>D</var>.tar.gz</code>,
|
||||
where <code><var>D</var></code> is the data's version.
|
||||
The following shell commands download
|
||||
these files to a <abbr>GNU</abbr>/Linux or similar host;
|
||||
see the downloaded
|
||||
<code>README</code> file for what to do next.</p>
|
||||
<pre style="margin-left: 2em"><code><a href="http://www.gnu.org/software/wget/">wget</a> 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz'
|
||||
<a href="http://www.gnu.org/software/gzip/">gzip</a> -dc tzcode*.tar.gz | <a href="http://www.gnu.org/software/tar/">tar</a> -xf -
|
||||
gzip -dc tzdata*.tar.gz | tar -xf -
|
||||
</code></pre>
|
||||
<p>
|
||||
The code lets you compile the <code>tz</code> source files into
|
||||
machine-readable binary files, one for each location. It also lets
|
||||
you read a <code>tz</code> binary file and interpret time stamps for that
|
||||
location.</p>
|
||||
<p>
|
||||
The data are by no means authoritative. If you find errors, please
|
||||
send changes to the <a href="mailto:tz@elsie.nci.nih.gov">time zone
|
||||
mailing list</a>. You can also <a
|
||||
href="mailto:tz-request@elsie.nci.nih.gov">subscribe</a> to the
|
||||
mailing list, retrieve the <a
|
||||
href="ftp://elsie.nci.nih.gov/pub/tzarchive.gz">archive of old
|
||||
messages</a> (in gzip compressed format), or retrieve <a
|
||||
href="ftp://munnari.oz.au/pub/oldtz/">archived older versions of code
|
||||
and data</a>; there is also a smaller <a
|
||||
href="http://public.planetmirror.com/pub/timezone/"><abbr
|
||||
title="Hypertext Transfer Protocol">HTTP</abbr>
|
||||
mirror</a>.</p>
|
||||
<p>
|
||||
The Web has several other sources for time zone and daylight saving time data.
|
||||
Here are some recent links that may be of interest.
|
||||
</p>
|
||||
<h2>Web pages using recent versions of the <code>tz</code> database</h2>
|
||||
<ul>
|
||||
<li><a href="http://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a>
|
||||
is a text-based point-and-click interface to tables of current time
|
||||
throughout the world.</li>
|
||||
<li>Fancier web interfaces, roughly in ascending order of complexity, include:
|
||||
<ul>
|
||||
<li><a
|
||||
href="http://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current
|
||||
Time in 1000 Places</a></li>
|
||||
<li><a href="http://timezoneconverter.com/">Time Zone Converter</a></li>
|
||||
</ul></li>
|
||||
<li><a href="http://www.timeanddate.com/worldclock/">The World Clock -
|
||||
Time Zones</a>
|
||||
is a web interface to a time zone database derived from
|
||||
<code>tz</code>'s.</li>
|
||||
</ul>
|
||||
<h2>Other time zone database formats</h2>
|
||||
<ul>
|
||||
<li>The <a href="ftp://ftp.rfc-editor.org/in-notes/rfc2445.txt">
|
||||
Internet Calendaring and Scheduling Core Object Specification
|
||||
(iCalendar)</a> specification published by the (now-concluded) <a
|
||||
href="http://www.ietf.org/html.charters/OLD/calsch-charter.html"><abbr
|
||||
title="Internet Engineering Task Force">IETF</abbr>
|
||||
Calendaring and Scheduling Working Group (<abbr
|
||||
title="Calendaring and Scheduling Working Group">calsch</abbr>)</a>
|
||||
covers time zone
|
||||
data; see its VTIMEZONE calendar component.
|
||||
The <a href="http://www.calconnect.org/">Calendaring and Scheduling
|
||||
Consortium</a> is promoting further work in this area. <a
|
||||
href="ftp://ftp.rfc-editor.org/internet-drafts/draft-royer-ical-basic-04.txt">iCalendar
|
||||
Basic</a> is a draft simplified definition that omits VTIMEZONE due to
|
||||
its complexity, but this removal is expected to appear as an
|
||||
independent specification later.</li>
|
||||
<li><a
|
||||
href="ftp://ftp.rfc-editor.org/internet-drafts/draft-royer-timezone-registry-03.txt">Time
|
||||
Zone Registry</a> proposes an <a href="http://www.iana.org/"><abbr
|
||||
title="Internet Assigned Numbers Authority">IANA</abbr></a> time zone
|
||||
registration process that would establish unique names for each
|
||||
version of each <code>tz</code> zone, along with a polygonal
|
||||
representation of the geographical area corresponding to the
|
||||
zone.</li>
|
||||
<li>The <a
|
||||
href="http://lists.w3.org/Archives/Public/www-rdf-calendar/">www-rdf-calendar</a>
|
||||
list discusses <a
|
||||
href="http://www.w3.org/RDF/"><abbr
|
||||
title="Resource Description Framework">RDF</abbr></a>-based calendar
|
||||
and group scheduling systems, and has a <a
|
||||
href="http://www.w3.org/2002/12/cal/#tzd">workspace on time zone
|
||||
data</a> converted from <code>tz</code>. An earlier <a
|
||||
href="http://www.w3.org/2000/01/foo">schema</a> was sketched out.</li>
|
||||
<li><a
|
||||
href="ftp://ftp.rfc-editor.org/internet-drafts/draft-royer-calsch-xcal-03.txt"><abbr
|
||||
title="iCalendar in XML Format">xCal-Basic</abbr></a>
|
||||
is a draft <a
|
||||
href="http://www.w3.org/XML/"><abbr
|
||||
title="Extensible Markup Language">XML</abbr></a> document type
|
||||
definition that corresponds to iCalendar.</li>
|
||||
</ul>
|
||||
<h2>Other <code>tz</code> compilers</h2>
|
||||
<ul>
|
||||
<li><a href="http://dialspace.dial.pipex.com/prod/dialspace/town/pipexdsl/s/asbm26/vzic/">Vzic iCalendar
|
||||
Timezone Converter</a> describes a program Vzic that compiles
|
||||
<code>tz</code> source into iCalendar-compatible VTIMEZONE files.
|
||||
Vzic is freely
|
||||
available under the <a
|
||||
href="http://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr>
|
||||
General Public License (<abbr
|
||||
title="General Public License">GPL</abbr>)</a>.</li>
|
||||
<li><a
|
||||
href="http://search.cpan.org/dist/DateTime-TimeZone/">DateTime::TimeZone</a>
|
||||
contains a script <code>parse_olson</code> that compiles
|
||||
<code>tz</code> source into <a href="http://www.perl.org/">Perl</a>
|
||||
modules. It is part of the Perl <a
|
||||
href="http://datetime.perl.org/">DateTime Project</a>, which is freely
|
||||
available under both the <abbr>GPL</abbr> and the Perl Artistic
|
||||
License. DateTime::TimeZone also contains a script
|
||||
<code>tests_from_zdump</code> that generates test cases for each clock
|
||||
transition in the <code>tz</code> database.</li>
|
||||
<li><a href="http://www-306.ibm.com/software/globalization/icu/"><abbr
|
||||
title="International Components for Unicode">ICU</abbr></a>
|
||||
contains a C/C++ library for internationalization that
|
||||
has a compiler from <code>tz</code> source
|
||||
into an <abbr>ICU</abbr>-specific format.
|
||||
<abbr>ICU</abbr> is freely available under a
|
||||
<abbr title="Berkeley Software Distribution">BSD</abbr>-style license.</li>
|
||||
<li><a href="http://joda-time.sourceforge.net/">Joda Time - Java date
|
||||
and time <abbr title="Application Program Interface">API</abbr></a>
|
||||
contains a class
|
||||
<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles
|
||||
<code>tz</code> source into a Joda-specific binary format. Joda Time
|
||||
is freely available under a <abbr>BSD</abbr>-style license.</li>
|
||||
<li><a href="http://sourceforge.net/projects/pytz/">PyTZ - Python Time
|
||||
Zone Library</a> compiles <code>tz</code> source into
|
||||
<a href="http://www.python.org/">Python</a>.
|
||||
It is freely available under a <abbr>BSD</abbr>-style license.</li>
|
||||
<li><a href="http://tzinfo.rubyforge.org/">TZInfo - Ruby Timezone Library</a>
|
||||
compiles <code>tz</code> source into
|
||||
<a href="http://www.ruby-lang.org/">Ruby</a>.
|
||||
It is freely available under the <abbr
|
||||
title="Massachusetts Institute of Technology">MIT</abbr> license.</li>
|
||||
</ul>
|
||||
<h2>Other <code>tz</code> binary file readers</h2>
|
||||
<ul>
|
||||
<li>The <a
|
||||
href="http://www.gnu.org/software/libc/"><abbr>GNU</abbr> C
|
||||
Library</a>
|
||||
has an independent, thread-safe implementation of
|
||||
a <code>tz</code> binary file reader.
|
||||
This library is freely available under the
|
||||
<a href="http://www.gnu.org/copyleft/lesser.html">
|
||||
<abbr>GNU</abbr> Lesser General Public License
|
||||
(<abbr title="Lesser General Public License">LGPL</abbr>)</a>,
|
||||
and is widely used in <abbr>GNU</abbr>/Linux systems.</li>
|
||||
<li><a href="http://www.bmsi.com/java/#TZ">ZoneInfo.java</a>
|
||||
is a <code>tz</code> binary file reader written in Java.
|
||||
It is freely available under the <abbr>LGPL</abbr>.</li>
|
||||
<li><a href="http://s.keim.free.fr/tz/doc.html">Python time zones</a>
|
||||
is a <code>tz</code> binary file reader written in Python.
|
||||
It is freely available under a <abbr>BSD</abbr>-style license.</li>
|
||||
</ul>
|
||||
<h2>Other <code>tz</code>-based time zone software</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="http://users.skynet.be/Peter.Verthez/projects/intclock/">International
|
||||
clock (intclock)</a> is a multi-timezone clock for
|
||||
<abbr>GNU</abbr>/Linux and similar systems. It is freely available
|
||||
under the <abbr>GPL</abbr>.</li>
|
||||
<li><a href="http://java.sun.com/">Sun Java</a> releases since 1.4
|
||||
contain a copy of a subset of a recent <code>tz</code> database in a
|
||||
Java-specific format.</li>
|
||||
<li><a
|
||||
href="http://www1.tip.nl/~t876506/AboutTimeZonesHC.html">HyperCard
|
||||
time zones calculator</a> was a HyperCard stack.</li>
|
||||
<li><a
|
||||
href="http://www.veladg.com/velaterra.html">VelaTerra</a> is
|
||||
a Mac OS X program. Its developers
|
||||
<a href="http://www.veladg.com/tzoffer.html">offer free
|
||||
licenses</a> to <code>tz</code> contributors.</li>
|
||||
<li><a
|
||||
href="http://www.cimmyt.org/timezone/">World Time Explorer</a> is a
|
||||
Microsoft Windows program.</li>
|
||||
</ul>
|
||||
<h2>Other time zone databases</h2>
|
||||
<ul>
|
||||
<li><a href="http://www.astro.com/cgi/aq.cgi?lang=e">Atlas Query</a>
|
||||
is Astrodienst's Web version of Shanks's
|
||||
excellent time zone history atlases published in both <a
|
||||
href="http://astrocom.com/products/software.php?software_id=ibmwboth">computer</a>
|
||||
and book form (<a
|
||||
href="http://astrocom.com/products/book.php?book_id=b110x">one volume
|
||||
for the USA</a>, and <a
|
||||
href="http://astrocom.com/products/book.php?book_id=b112x">one for
|
||||
other locations</a>) by <a
|
||||
href="http://astrocom.com/">Astro Communications Services</a>.</li>
|
||||
<li><a href="http://worldtime.com/">WORLDTIME: interactive atlas,
|
||||
time info, public holidays</a>
|
||||
contains information on local time, sunrise and sunset,
|
||||
and public holidays in several hundred cities around the world.</li>
|
||||
<li><a href="http://www.worldtimeserver.com/">World Time Server</a>
|
||||
is another time zone database.</li>
|
||||
<li><a href="http://tycho.usno.navy.mil/tzones.html">World Time Zones</a>
|
||||
contains data from the Time Service Department of the
|
||||
<abbr>US</abbr> Naval Observatory, used as the source
|
||||
for the <code>usno*</code> files in the <code>tz</code> distribution.</li>
|
||||
<li>The <a href="http://www.iata.org/ps/publications/9179.htm">Standard
|
||||
Schedules Information Manual</a> of the
|
||||
<a href="http://www.iata.org/index.htm">International Air Transport
|
||||
Association</a>
|
||||
gives current time zone rules for airports served by commercial aviation.</li>
|
||||
</ul>
|
||||
<h2>Maps</h2>
|
||||
<ul>
|
||||
<li>The <a href="http://www.odci.gov/">United States Central
|
||||
Intelligence Agency (<abbr
|
||||
title="Central Intelligence Agency">CIA</abbr>)</a> publishes a <a
|
||||
href="http://www.odci.gov/cia/publications/factbook/reference_maps/pdf/time_zones.pdf">time
|
||||
zone map</a>; the
|
||||
<a
|
||||
href="http://www.lib.utexas.edu/maps/world.html">Perry-Castañeda
|
||||
Library Map Collection</a>
|
||||
of the University of Texas at Austin has copies of
|
||||
recent editions.
|
||||
The pictorial quality is good,
|
||||
but the maps do not indicate summer time,
|
||||
and parts of the data are a few years out of date.</li>
|
||||
<li><a href="http://worldtimezone.com/">Current time around the world
|
||||
and standard time zones map of the world</a>
|
||||
has several fancy time zone maps; it covers Russia particularly well.
|
||||
The maps' pictorial quality is not quite as good as the
|
||||
<abbr>CIA</abbr>'s
|
||||
but the maps are more up to date.</li>
|
||||
</ul>
|
||||
<h2>Time zone boundaries</h2>
|
||||
<ul>
|
||||
<li><a href="http://www.statoids.com/statoids.html">Administrative Divisions
|
||||
of Countries ("Statoids")</a> contains detailed lists of
|
||||
<code>tz</code>-related zone subdivision data.</li>
|
||||
<li><a href="http://home-4.tiscali.nl/~t876506/Multizones.html">Time
|
||||
zone boundaries for multizone countries</a> summarizes legal
|
||||
boundaries between time zones within countries.</li>
|
||||
<li>Manifold.net's <a
|
||||
href="http://www.manifold.net/download/freemaps.html">Free Maps and
|
||||
<abbr title="Geographic Information Systems">GIS</abbr>
|
||||
Data</a> includes a Manifold-format map of
|
||||
world time zone boundaries distributed under the
|
||||
<abbr>GPL</abbr>.</li>
|
||||
<li>The <abbr>US</abbr> Geological Survey's National Atlas of
|
||||
the United States
|
||||
publishes the <a href="http://nationalatlas.gov/mld/timeznp.html">Time
|
||||
Zones of the United States</a> in the public domain.</li>
|
||||
<li>The GeoCommunity lists several commercial sources for <a
|
||||
href="http://spatialnews.geocomm.com/features/timezones/">International
|
||||
Time Zones and Time Zone Data</a>.</li>
|
||||
</ul>
|
||||
<h2>Civil time concepts and history</h2>
|
||||
<ul>
|
||||
<li><a href="http://physics.nist.gov/GenInt/Time/time.html">A
|
||||
Walk through Time</a>
|
||||
surveys the evolution of timekeeping.</li>
|
||||
<li><a href="http://webexhibits.org/daylightsaving/">About Daylight
|
||||
Saving Time - History, rationale, laws & dates</a>
|
||||
is an overall history of <abbr>DST</abbr>.</li>
|
||||
<li><a href="http://www.energy.ca.gov/daylightsaving.html">Saving Time,
|
||||
Saving Energy</a> discusses a primary justification for <abbr>DST</abbr>.</li>
|
||||
<li><a href="http://www.seizethedaylight.com/dst/">Who Knew? A Brief
|
||||
History of Daylight Saving Time</a> summarizes some of the contentious
|
||||
history of <abbr>DST</abbr>.</li>
|
||||
<li><a href="http://toi.iriti.cnr.it/">The
|
||||
Time of Internet</a>
|
||||
describes time zones and daylight saving time,
|
||||
with diagrams.
|
||||
The time zone map is out of date, however.</li>
|
||||
<li><a href="http://www.phys.uu.nl/~vgent/idl/idl.htm">A History of
|
||||
the International Date Line</a> tells the story of the most important
|
||||
time zone boundary.</li>
|
||||
<li><a href="http://www.statoids.com/tconcept.html">Basic Time
|
||||
Zone Concepts</a> discusses terminological issues behind time zones.</li>
|
||||
</ul>
|
||||
<h2>National histories of legal time</h2>
|
||||
<dl>
|
||||
<dt>Australia</dt>
|
||||
<dd>The Bureau of Metrology publishes a list of
|
||||
<a href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation Dates of Daylight Savings Time within Australia</a>.</dd>
|
||||
<dt>Austria</dt>
|
||||
<dd>The Federal Office of Metrology and Surveying publishes a
|
||||
table of <a href="http://www.metrologie.at/pdf/sommerzeit.pdf"
|
||||
hreflang="de">daylight saving time in Austria (in German)</a>.</dd>
|
||||
<dt>Belgium</dt>
|
||||
<dd>The Royal Observatory of Belgium maintains a table of <a
|
||||
href="http://www.astro.oma.be/GENERAL/INFO/nli001a.html"
|
||||
hreflang="nl">time in Belgium (in Dutch)</a>.</dd>
|
||||
<dt>Brazil</dt>
|
||||
<dd>The Time Service Department of the National Observatory
|
||||
records <a href="http://pcdsh01.on.br/DecHV.html"
|
||||
hreflang="pt-BR">Brazil's daylight saving time decrees (in
|
||||
Portuguese)</a>.</dd>
|
||||
<dt>Canada</dt>
|
||||
<dd>The Institute for National Measurement Standards publishes current
|
||||
and some older information about <a
|
||||
href="http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php">Time
|
||||
Zones & Daylight Saving Time</a>.</dd>
|
||||
<dt>Chile</dt>
|
||||
<dd>WebExhibits publishes a <a
|
||||
href="http://webexhibits.org/daylightsaving/chile.html"
|
||||
hreflang="es">history of official time (in Spanish)</a> originally
|
||||
written by the Chilean Hydrographic and Oceanographic Service.</dd>
|
||||
<dt>Germany</dt>
|
||||
<dd>The National Institute for Science and Technology maintains the <a
|
||||
href="http://www.ptb.de/en/org/4/44/441/dars_e.htm">Realisation of
|
||||
Legal Time in Germany</a>.</dd>
|
||||
<dt>Israel</dt>
|
||||
<dd>The Interior Ministry periodically issues <a
|
||||
href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements/"
|
||||
hreflang="he">announcements (in Hebrew)</a>.</dd>
|
||||
<dt>Mexico</dt>
|
||||
<dd>The Investigation and Analysis Service of the Mexican Library of
|
||||
Congress has published a <a
|
||||
href="http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/"
|
||||
hreflang="es">history of Mexican local time (in Spanish)</a>.</dd>
|
||||
<dt>Malaysia</dt>
|
||||
<dd>See Singapore below.</dd>
|
||||
<dt>Netherlands</dt>
|
||||
<dd><a href="http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm"
|
||||
hreflang="nl">Legal time in the Netherlands (in Dutch)</a>
|
||||
covers the history of local time in the Netherlands from ancient times.</dd>
|
||||
<dt>New Zealand</dt>
|
||||
<dd>The Department of Internal Affairs maintains a brief history <a
|
||||
href="http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Resource-material-Information-We-Provide-About-Daylight-Saving">About
|
||||
Daylight Saving</a>. The privately-maintained <a
|
||||
href="http://www.astrologyschool.com/nztime.html">History of New Zealand
|
||||
time</a> has more details.</dd>
|
||||
<dt>Norway</dt>
|
||||
<dd>The Norwegian Meteorological Institute lists
|
||||
<a href="http://met.no/met/met_lex/q_u/sommertid.html" hreflang="no">Summer
|
||||
time in Norway (in Norwegian)</a>, citing the
|
||||
Institute of Theoretical Astrophysics, Oslo.</dd>
|
||||
<dt>Singapore</dt>
|
||||
<dd><a
|
||||
href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why
|
||||
is Singapore in the "Wrong" Time Zone?</a> details the
|
||||
history of legal time in Singapore and Malaysia.</dd>
|
||||
<dt>United Kingdom</dt>
|
||||
<dd><a
|
||||
href="http://www.srcf.ucam.org/~jsm28/british-time/">History of
|
||||
legal time in Britain</a> discusses in detail the country
|
||||
with perhaps the best-documented history of clock adjustments.
|
||||
The National Physical Laboratory also maintains an <a
|
||||
href="http://www.npl.co.uk/time/summer_time_archive.html">Archive
|
||||
of Summer time dates</a>.</dd>
|
||||
</dl>
|
||||
<h2>Precision timekeeping</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="http://literature.agilent.com/litweb/pdf/5965-7984E.pdf">The
|
||||
Science of Timekeeping</a> is a thorough introduction
|
||||
to the theory and practice of precision timekeeping.</li>
|
||||
<li><a href="http://www.ntp.org/"><abbr
|
||||
title="Network Time Protocol">NTP</abbr>: The Network
|
||||
Time Protocol</a>
|
||||
discusses how to synchronize clocks of
|
||||
Internet hosts.</li>
|
||||
<li><a href="http://gauss.gge.unb.ca/GMT.UT.and.the.RGO.html">A Few
|
||||
Facts Concerning <abbr title="Greenwich Mean Time">GMT</abbr>, <abbr
|
||||
title="Universal Time">UT</abbr>, and
|
||||
the <abbr title="Royal Greenwich Observatory">RGO</abbr></a>
|
||||
answers questions like "What is the
|
||||
difference between <abbr>GMT</abbr> and <abbr>UTC</abbr>?"</li>
|
||||
<li><a
|
||||
href="http://www.cv.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical
|
||||
Times</a> explains more abstruse astronomical time scales like
|
||||
<abbr title="Terrestrial Dynamic Time">TDT</abbr>,
|
||||
<abbr title="Geocentric Coordinate Time">TCG</abbr>, and
|
||||
<abbr title="Barycentric Dynamic Time">TDB</abbr>.
|
||||
<a href="http://www.ucolick.org/~sla/leapsecs/timescales.html">Time
|
||||
Scales</a> goes into more detail, particularly for historical variants.</li>
|
||||
<li>The <a href="http://www.iau.org/"><abbr
|
||||
title="International Astronomical Union">IAU</abbr></a>'s <a
|
||||
href="http://www.iau-sofa.rl.ac.uk/"><abbr
|
||||
title="Standards Of Fundamental Astronomy">SOFA</abbr></a>
|
||||
initiative publishes Fortran
|
||||
code for converting among time scales like
|
||||
<abbr title="International Atomic Time">TAI</abbr>,
|
||||
<abbr>TDB</abbr>, <abbr>TDT</abbr> and
|
||||
<abbr>UTC</abbr>.</li>
|
||||
<li><a href="http://www.jpl.nasa.gov/basics/bsf2-3.htm">Basics of
|
||||
Space Flight - Reference Systems - Time Conventions</a>
|
||||
briefly explains interplanetary space flight timekeeping.</li>
|
||||
<li><a
|
||||
href="http://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical
|
||||
Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a> briefly
|
||||
describes Mars Coordinated Time (<abbr
|
||||
title="Mars Coordinated Time">MTC</abbr>) and the
|
||||
diverse local time
|
||||
scales used by each landed mission on Mars.</li>
|
||||
<li><a href="http://www.leapsecond.com/">LeapSecond.com</a> is
|
||||
dedicated not only to leap seconds but to precise time and frequency
|
||||
in general. It covers the state of the art in amateur timekeeping, and
|
||||
how the art has progressed over the past few decades.</li>
|
||||
<li><a
|
||||
href="http://hpiers.obspm.fr/eop-pc/products/bulletins/bulletins.html">Bulletins
|
||||
maintained by the
|
||||
<abbr title="International Earth Rotation Service">IERS</abbr>
|
||||
<abbr title="Earth Orientation Parameters">EOP</abbr>
|
||||
(<abbr title="Product Center">PC</abbr>)</a> contains official publications of
|
||||
the Earth Orientation Parameters Product Center of the
|
||||
International Earth Rotation Service, the committee that decides
|
||||
when leap seconds occur.</li>
|
||||
<li>The <a
|
||||
href="http://www.mail-archive.com/leapsecs@rom.usno.navy.mil/">Leap
|
||||
Second Discussion List</a> and <a
|
||||
href="http://rom.usno.navy.mil/archives/leapsecs.html">archive</a> covers <a
|
||||
href="http://gauss.gge.unb.ca/papers.pdf/gpsworld.november99.pdf">McCarthy
|
||||
and Klepczynski's proposal to discontinue leap seconds</a>, published in <a
|
||||
href="http://www.gpsworld.com/gpsworld/"><abbr
|
||||
title="Global Positioning System">GPS</abbr> World</a>
|
||||
<strong>10</strong>, 11
|
||||
(1999-11), 50–57 and discussed further in R. A. Nelson et al.,
|
||||
<a href="http://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The
|
||||
leap second: its history and possible future</a>,
|
||||
<a href="http://www.bipm.fr/metrologia/index.html">Metrologia</a>
|
||||
<strong>38</strong> (2001), 509–529.
|
||||
<a href="http://www.ucolick.org/~sla/leapsecs/">The
|
||||
Future of Leap Seconds</a> covers this
|
||||
contentious issue.</li>
|
||||
</ul>
|
||||
<h2>Time notation</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://www.cl.cam.ac.uk/~mgk25/iso-time.html">A Summary of
|
||||
the International Standard Date and Time Notation</a> is a good
|
||||
summary of
|
||||
<a
|
||||
href="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=40874"><abbr
|
||||
title="International Organization for Standardization">ISO</abbr>
|
||||
8601:2004 -- Data elements and interchange formats -- Information
|
||||
interchange -- Representation of dates and times</a>.</li>
|
||||
<li>
|
||||
<a href="http://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr>
|
||||
Schema: Datatypes - dateTime</a> specifies a format inspired by
|
||||
<abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li>
|
||||
<li>
|
||||
Section 3.3 of <a
|
||||
href="ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt">Internet
|
||||
<abbr title="Request For Comments">RFC</abbr> 2822</a>
|
||||
specifies the time notation used in email and <a
|
||||
href="ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt"><abbr>HTTP</abbr></a>
|
||||
headers.</li>
|
||||
<li>
|
||||
<a href="ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt">Internet
|
||||
<abbr>RFC</abbr> 3339</a> specifies an <abbr>ISO</abbr> 8601
|
||||
profile for use in new Internet
|
||||
protocols.</li>
|
||||
<li>
|
||||
<a href="http://www.hackcraft.net/web/datetime/">Date & Time
|
||||
Formats on the Web</a> surveys web- and Internet-oriented date and time
|
||||
formats.</li>
|
||||
<li>
|
||||
<a href="http://www.exit109.com/~ghealton/y2k/yrexamples.html">The
|
||||
Best of Dates, the Worst of Dates</a> covers many problems encountered
|
||||
by software developers when handling dates and time stamps.</li>
|
||||
<li><a
|
||||
href="http://www-306.ibm.com/software/globalization/icu/"><abbr>ICU</abbr></a>
|
||||
contains a mechanism for localizing time zone
|
||||
labels and abbreviations; for example, one can use it to specify
|
||||
Russian translations for "Eastern European Summer Time",
|
||||
"<abbr title="Eastern European Summer Time">EEST</abbr>",
|
||||
and <code>Europe/Bucharest</code>.
|
||||
This mechanism is part of the
|
||||
<a href="http://unicode.org/cldr/">Unicode
|
||||
<abbr title="Common Locale Data Repository">CLDR</abbr> Project</a>;
|
||||
for example, the <a
|
||||
href="http://unicode.org/cldr/data/diff/by_type/dates_timeZoneNames.html"><abbr>CLDR</abbr> Sideways Data for dates_timeZoneNames</a>
|
||||
shows values for time zone names in many locales.</li>
|
||||
<li>Alphabetic time zone abbreviations should not be used as unique
|
||||
identifiers for <abbr>UTC</abbr> offsets as they are ambiguous in
|
||||
practice. For example, "<abbr>EST</abbr>" denotes 5 hours behind
|
||||
<abbr>UTC</abbr> in English-speaking North America, but it denotes 10
|
||||
or 11 hours ahead of <abbr>UTC</abbr> in Australia; and
|
||||
French-speaking North Americans prefer
|
||||
"<abbr title="Heure Normale de l'Est">HNE</abbr>" to
|
||||
"<abbr>EST</abbr>". For <abbr>POSIX</abbr> the <code>tz</code>
|
||||
database contains English abbreviations for all time stamps but in
|
||||
many cases these are merely inventions of the database
|
||||
maintainers.</li>
|
||||
<li>Numeric time zone abbreviations typically count hours east of
|
||||
<abbr>UTC</abbr>, e.g., <code>+09</code> for Japan and
|
||||
<code>-10</code> for Hawaii. However, the <abbr>POSIX</abbr>
|
||||
<code>TZ</code> environment variable uses the opposite convention. For
|
||||
example, one might use <code>TZ="JST-9"</code> and
|
||||
<code>TZ="HST10"</code> for Japan and Hawaii, respectively. If the
|
||||
<code>tz</code> database is available, it is usually better to use
|
||||
settings like <code>TZ="Asia/Tokyo"</code> and
|
||||
<code>TZ="Pacific/Honolulu"</code> instead, as this should avoid
|
||||
confusion, handle old time stamps better, and insulate you better from
|
||||
any future changes to the rules. One should never set
|
||||
<abbr>POSIX</abbr> <code>TZ</code> to a value like
|
||||
<code>"GMT-9"</code>, though, since this would falsely claim that
|
||||
local time is nine hours ahead of <abbr>UTC</abbr> and the time zone
|
||||
is called "<abbr>GMT</abbr>".</li>
|
||||
</ul>
|
||||
<h2>Related indexes</h2>
|
||||
<ul>
|
||||
<li><a href="tz-art.htm">Time and the Arts</a></li>
|
||||
<li><a href="http://dmoz.org/Reference/Time/">Open Directory -
|
||||
Reference: Time</a></li>
|
||||
<li><a href="http://directory.google.com/Top/Reference/Time/">Google Directory
|
||||
- Reference > Time</a></li>
|
||||
<li><a href="http://dir.yahoo.com/Science/Measurements_and_Units/Time/">Yahoo!
|
||||
Directory > Science > Measurements and Units > Time</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
138
commands/zoneinfo/tzfile.5
Normal file
138
commands/zoneinfo/tzfile.5
Normal file
|
@ -0,0 +1,138 @@
|
|||
.TH TZFILE 5
|
||||
.SH NAME
|
||||
tzfile \- time zone information
|
||||
.SH SYNOPSIS
|
||||
.B
|
||||
#include <tzfile.h>
|
||||
.SH DESCRIPTION
|
||||
The time zone information files used by
|
||||
.IR tzset (3)
|
||||
begin with the magic characters "TZif" to identify then as
|
||||
time zone information files,
|
||||
followed by sixteen bytes reserved for future use,
|
||||
followed by six four-byte values of type
|
||||
.BR long ,
|
||||
written in a ``standard'' byte order
|
||||
(the high-order byte of the value is written first).
|
||||
These values are,
|
||||
in order:
|
||||
.TP
|
||||
.I tzh_ttisgmtcnt
|
||||
The number of UTC/local indicators stored in the file.
|
||||
.TP
|
||||
.I tzh_ttisstdcnt
|
||||
The number of standard/wall indicators stored in the file.
|
||||
.TP
|
||||
.I tzh_leapcnt
|
||||
The number of leap seconds for which data is stored in the file.
|
||||
.TP
|
||||
.I tzh_timecnt
|
||||
The number of "transition times" for which data is stored
|
||||
in the file.
|
||||
.TP
|
||||
.I tzh_typecnt
|
||||
The number of "local time types" for which data is stored
|
||||
in the file (must not be zero).
|
||||
.TP
|
||||
.I tzh_charcnt
|
||||
The number of characters of "time zone abbreviation strings"
|
||||
stored in the file.
|
||||
.PP
|
||||
The above header is followed by
|
||||
.I tzh_timecnt
|
||||
four-byte values of type
|
||||
.BR long ,
|
||||
sorted in ascending order.
|
||||
These values are written in ``standard'' byte order.
|
||||
Each is used as a transition time (as returned by
|
||||
.IR time (2))
|
||||
at which the rules for computing local time change.
|
||||
Next come
|
||||
.I tzh_timecnt
|
||||
one-byte values of type
|
||||
.BR "unsigned char" ;
|
||||
each one tells which of the different types of ``local time'' types
|
||||
described in the file is associated with the same-indexed transition time.
|
||||
These values serve as indices into an array of
|
||||
.I ttinfo
|
||||
structures that appears next in the file;
|
||||
these structures are defined as follows:
|
||||
.in +.5i
|
||||
.sp
|
||||
.nf
|
||||
.ta .5i +\w'unsigned int\0\0'u
|
||||
struct ttinfo {
|
||||
long tt_gmtoff;
|
||||
int tt_isdst;
|
||||
unsigned int tt_abbrind;
|
||||
};
|
||||
.in -.5i
|
||||
.fi
|
||||
.sp
|
||||
Each structure is written as a four-byte value for
|
||||
.I tt_gmtoff
|
||||
of type
|
||||
.BR long ,
|
||||
in a standard byte order, followed by a one-byte value for
|
||||
.I tt_isdst
|
||||
and a one-byte value for
|
||||
.IR tt_abbrind .
|
||||
In each structure,
|
||||
.I tt_gmtoff
|
||||
gives the number of seconds to be added to UTC,
|
||||
.I tt_isdst
|
||||
tells whether
|
||||
.I tm_isdst
|
||||
should be set by
|
||||
.I localtime (3)
|
||||
and
|
||||
.I tt_abbrind
|
||||
serves as an index into the array of time zone abbreviation characters
|
||||
that follow the
|
||||
.I ttinfo
|
||||
structure(s) in the file.
|
||||
.PP
|
||||
Then there are
|
||||
.I tzh_leapcnt
|
||||
pairs of four-byte values, written in standard byte order;
|
||||
the first value of each pair gives the time
|
||||
(as returned by
|
||||
.IR time(2))
|
||||
at which a leap second occurs;
|
||||
the second gives the
|
||||
.I total
|
||||
number of leap seconds to be applied after the given time.
|
||||
The pairs of values are sorted in ascending order by time.
|
||||
.PP
|
||||
Then there are
|
||||
.I tzh_ttisstdcnt
|
||||
standard/wall indicators, each stored as a one-byte value;
|
||||
they tell whether the transition times associated with local time types
|
||||
were specified as standard time or wall clock time,
|
||||
and are used when a time zone file is used in handling POSIX-style
|
||||
time zone environment variables.
|
||||
.PP
|
||||
Finally there are
|
||||
.I tzh_ttisgmtcnt
|
||||
UTC/local indicators, each stored as a one-byte value;
|
||||
they tell whether the transition times associated with local time types
|
||||
were specified as UTC or local time,
|
||||
and are used when a time zone file is used in handling POSIX-style
|
||||
time zone environment variables.
|
||||
.PP
|
||||
.I Localtime
|
||||
uses the first standard-time
|
||||
.I ttinfo
|
||||
structure in the file
|
||||
(or simply the first
|
||||
.I ttinfo
|
||||
structure in the absence of a standard-time structure)
|
||||
if either
|
||||
.I tzh_timecnt
|
||||
is zero or the time argument is less than the first transition time recorded
|
||||
in the file.
|
||||
.SH SEE ALSO
|
||||
newctime(3)
|
||||
.\" @(#)tzfile.5 7.12
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 1996-06-05 by Arthur David Olson.
|
93
commands/zoneinfo/tzfile.5.txt
Normal file
93
commands/zoneinfo/tzfile.5.txt
Normal file
|
@ -0,0 +1,93 @@
|
|||
NAME
|
||||
|
||||
tzfile - time zone information
|
||||
|
||||
SYNOPSIS
|
||||
#include <tzfile.h>
|
||||
|
||||
DESCRIPTION
|
||||
The time zone information files used by tzset(3) begin with
|
||||
the magic characters "TZif" to identify then as time zone
|
||||
information files, followed by sixteen bytes reserved for
|
||||
future use, followed by six four-byte values of type long,
|
||||
written in a ``standard'' byte order (the high-order byte of
|
||||
the value is written first). These values are, in order:
|
||||
|
||||
tzh_ttisgmtcnt
|
||||
The number of UTC/local indicators stored in the file.
|
||||
|
||||
tzh_ttisstdcnt
|
||||
The number of standard/wall indicators stored in the
|
||||
file.
|
||||
|
||||
tzh_leapcnt
|
||||
The number of leap seconds for which data is stored in
|
||||
the file.
|
||||
|
||||
tzh_timecnt
|
||||
The number of "transition times" for which data is
|
||||
stored in the file.
|
||||
|
||||
tzh_typecnt
|
||||
The number of "local time types" for which data is
|
||||
stored in the file (must not be zero).
|
||||
|
||||
tzh_charcnt
|
||||
The number of characters of "time zone abbreviation
|
||||
strings" stored in the file.
|
||||
|
||||
The above header is followed by tzh_timecnt four-byte values
|
||||
of type long, sorted in ascending order. These values are
|
||||
written in ``standard'' byte order. Each is used as a
|
||||
transition time (as returned by time(2)) at which the rules
|
||||
for computing local time change. Next come tzh_timecnt
|
||||
one-byte values of type unsigned char; each one tells which
|
||||
of the different types of ``local time'' types described in
|
||||
the file is associated with the same-indexed transition
|
||||
time. These values serve as indices into an array of ttinfo
|
||||
structures that appears next in the file; these structures
|
||||
are defined as follows:
|
||||
|
||||
struct ttinfo {
|
||||
long tt_gmtoff;
|
||||
int tt_isdst;
|
||||
unsigned int tt_abbrind;
|
||||
};
|
||||
|
||||
Each structure is written as a four-byte value for tt_gmtoff
|
||||
of type long, in a standard byte order, followed by a one-
|
||||
byte value for tt_isdst and a one-byte value for tt_abbrind.
|
||||
In each structure, tt_gmtoff gives the number of seconds to
|
||||
be added to UTC, tt_isdst tells whether tm_isdst should be
|
||||
set by localtime (3) and tt_abbrind serves as an index into
|
||||
the array of time zone abbreviation characters that follow
|
||||
the ttinfo structure(s) in the file.
|
||||
|
||||
Then there are tzh_leapcnt pairs of four-byte values,
|
||||
written in standard byte order; the first value of each pair
|
||||
gives the time (as returned by time(2)) at which a leap
|
||||
second occurs; the second gives the total number of leap
|
||||
seconds to be applied after the given time. The pairs of
|
||||
values are sorted in ascending order by time.
|
||||
|
||||
Then there are tzh_ttisstdcnt standard/wall indicators, each
|
||||
stored as a one-byte value; they tell whether the transition
|
||||
times associated with local time types were specified as
|
||||
standard time or wall clock time, and are used when a time
|
||||
zone file is used in handling POSIX-style time zone
|
||||
environment variables.
|
||||
|
||||
Finally there are tzh_ttisgmtcnt UTC/local indicators, each
|
||||
stored as a one-byte value; they tell whether the transition
|
||||
times associated with local time types were specified as UTC
|
||||
or local time, and are used when a time zone file is used in
|
||||
handling POSIX-style time zone environment variables.
|
||||
|
||||
Localtime uses the first standard-time ttinfo structure in
|
||||
the file (or simply the first ttinfo structure in the
|
||||
absence of a standard-time structure) if either tzh_timecnt
|
||||
is zero or the time argument is less than the first
|
||||
transition time recorded in the file.
|
||||
|
||||
SEE ALSO
|
||||
newctime(3)
|
175
commands/zoneinfo/tzfile.h
Normal file
175
commands/zoneinfo/tzfile.h
Normal file
|
@ -0,0 +1,175 @@
|
|||
#ifndef TZFILE_H
|
||||
|
||||
#define TZFILE_H
|
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of
|
||||
** 1996-06-05 by Arthur David Olson.
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code.
|
||||
** There is no guarantee that it will remain unchanged,
|
||||
** or that it will remain at all.
|
||||
** Do NOT copy it to any system include directory.
|
||||
** Thank you!
|
||||
*/
|
||||
|
||||
/*
|
||||
** ID
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#ifndef NOID
|
||||
static char tzfilehid[] = "@(#)tzfile.h 7.18";
|
||||
#endif /* !defined NOID */
|
||||
#endif /* !defined lint */
|
||||
|
||||
/*
|
||||
** Information about time zone files.
|
||||
*/
|
||||
|
||||
#ifndef TZDIR
|
||||
#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */
|
||||
#endif /* !defined TZDIR */
|
||||
|
||||
#ifndef TZDEFAULT
|
||||
#define TZDEFAULT "localtime"
|
||||
#endif /* !defined TZDEFAULT */
|
||||
|
||||
#ifndef TZDEFRULES
|
||||
#define TZDEFRULES "posixrules"
|
||||
#endif /* !defined TZDEFRULES */
|
||||
|
||||
/*
|
||||
** Each file begins with. . .
|
||||
*/
|
||||
|
||||
#define TZ_MAGIC "TZif"
|
||||
|
||||
struct tzhead {
|
||||
char tzh_magic[4]; /* TZ_MAGIC */
|
||||
char tzh_reserved[16]; /* reserved for future use */
|
||||
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */
|
||||
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */
|
||||
char tzh_leapcnt[4]; /* coded number of leap seconds */
|
||||
char tzh_timecnt[4]; /* coded number of transition times */
|
||||
char tzh_typecnt[4]; /* coded number of local time types */
|
||||
char tzh_charcnt[4]; /* coded number of abbr. chars */
|
||||
};
|
||||
|
||||
/*
|
||||
** . . .followed by. . .
|
||||
**
|
||||
** tzh_timecnt (char [4])s coded transition times a la time(2)
|
||||
** tzh_timecnt (unsigned char)s types of local time starting at above
|
||||
** tzh_typecnt repetitions of
|
||||
** one (char [4]) coded UTC offset in seconds
|
||||
** one (unsigned char) used to set tm_isdst
|
||||
** one (unsigned char) that's an abbreviation list index
|
||||
** tzh_charcnt (char)s '\0'-terminated zone abbreviations
|
||||
** tzh_leapcnt repetitions of
|
||||
** one (char [4]) coded leap second transition times
|
||||
** one (char [4]) total correction after above
|
||||
** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition
|
||||
** time is standard time, if FALSE,
|
||||
** transition time is wall clock time
|
||||
** if absent, transition times are
|
||||
** assumed to be wall clock time
|
||||
** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition
|
||||
** time is UTC, if FALSE,
|
||||
** transition time is local time
|
||||
** if absent, transition times are
|
||||
** assumed to be local time
|
||||
*/
|
||||
|
||||
/*
|
||||
** In the current implementation, "tzset()" refuses to deal with files that
|
||||
** exceed any of the limits below.
|
||||
*/
|
||||
|
||||
#ifndef TZ_MAX_TIMES
|
||||
/*
|
||||
** The TZ_MAX_TIMES value below is enough to handle a bit more than a
|
||||
** year's worth of solar time (corrected daily to the nearest second) or
|
||||
** 138 years of Pacific Presidential Election time
|
||||
** (where there are three time zone transitions every fourth year).
|
||||
*/
|
||||
#define TZ_MAX_TIMES 370
|
||||
#endif /* !defined TZ_MAX_TIMES */
|
||||
|
||||
#ifndef TZ_MAX_TYPES
|
||||
#ifndef NOSOLAR
|
||||
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */
|
||||
#endif /* !defined NOSOLAR */
|
||||
#ifdef NOSOLAR
|
||||
/*
|
||||
** Must be at least 14 for Europe/Riga as of Jan 12 1995,
|
||||
** as noted by Earl Chew.
|
||||
*/
|
||||
#define TZ_MAX_TYPES 20 /* Maximum number of local time types */
|
||||
#endif /* !defined NOSOLAR */
|
||||
#endif /* !defined TZ_MAX_TYPES */
|
||||
|
||||
#ifndef TZ_MAX_CHARS
|
||||
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
|
||||
/* (limited by what unsigned chars can hold) */
|
||||
#endif /* !defined TZ_MAX_CHARS */
|
||||
|
||||
#ifndef TZ_MAX_LEAPS
|
||||
#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */
|
||||
#endif /* !defined TZ_MAX_LEAPS */
|
||||
|
||||
#define SECSPERMIN 60
|
||||
#define MINSPERHOUR 60
|
||||
#define HOURSPERDAY 24
|
||||
#define DAYSPERWEEK 7
|
||||
#define DAYSPERNYEAR 365
|
||||
#define DAYSPERLYEAR 366
|
||||
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
|
||||
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY)
|
||||
#define MONSPERYEAR 12
|
||||
|
||||
#define TM_SUNDAY 0
|
||||
#define TM_MONDAY 1
|
||||
#define TM_TUESDAY 2
|
||||
#define TM_WEDNESDAY 3
|
||||
#define TM_THURSDAY 4
|
||||
#define TM_FRIDAY 5
|
||||
#define TM_SATURDAY 6
|
||||
|
||||
#define TM_JANUARY 0
|
||||
#define TM_FEBRUARY 1
|
||||
#define TM_MARCH 2
|
||||
#define TM_APRIL 3
|
||||
#define TM_MAY 4
|
||||
#define TM_JUNE 5
|
||||
#define TM_JULY 6
|
||||
#define TM_AUGUST 7
|
||||
#define TM_SEPTEMBER 8
|
||||
#define TM_OCTOBER 9
|
||||
#define TM_NOVEMBER 10
|
||||
#define TM_DECEMBER 11
|
||||
|
||||
#define TM_YEAR_BASE 1900
|
||||
|
||||
#define EPOCH_YEAR 1970
|
||||
#define EPOCH_WDAY TM_THURSDAY
|
||||
|
||||
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
|
||||
|
||||
/*
|
||||
** Since everything in isleap is modulo 400 (or a factor of 400), we know that
|
||||
** isleap(y) == isleap(y % 400)
|
||||
** and so
|
||||
** isleap(a + b) == isleap((a + b) % 400)
|
||||
** or
|
||||
** isleap(a + b) == isleap(a % 400 + b % 400)
|
||||
** This is true even if % means modulo rather than Fortran remainder
|
||||
** (which is allowed by C89 but not C99).
|
||||
** We use this to avoid addition overflow problems.
|
||||
*/
|
||||
|
||||
#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
|
||||
|
||||
#endif /* !defined TZFILE_H */
|
41
commands/zoneinfo/tzselect.8
Normal file
41
commands/zoneinfo/tzselect.8
Normal file
|
@ -0,0 +1,41 @@
|
|||
.TH TZSELECT 8
|
||||
.SH NAME
|
||||
tzselect \- select a time zone
|
||||
.SH SYNOPSIS
|
||||
.B tzselect
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B tzselect
|
||||
program asks the user for information about the current location,
|
||||
and outputs the resulting time zone description to standard output.
|
||||
The output is suitable as a value for the TZ environment variable.
|
||||
.PP
|
||||
All interaction with the user is done via standard input and standard error.
|
||||
.SH "ENVIRONMENT VARIABLES"
|
||||
.TP
|
||||
\f3AWK\fP
|
||||
Name of a Posix-compliant
|
||||
.I awk
|
||||
program (default:
|
||||
.BR awk ).
|
||||
.TP
|
||||
\f3TZDIR\fP
|
||||
Name of the directory containing time zone data files (default:
|
||||
.BR /usr/local/etc/zoneinfo ).
|
||||
.SH FILES
|
||||
.TP
|
||||
\f2TZDIR\fP\f3/iso3166.tab\fP
|
||||
Table of ISO 3166 2-letter country codes and country names.
|
||||
.TP
|
||||
\f2TZDIR\fP\f3/zone.tab\fP
|
||||
Table of country codes, latitude and longitude, TZ values, and
|
||||
descriptive comments.
|
||||
.TP
|
||||
\f2TZDIR\fP\f3/\fP\f2TZ\fP
|
||||
Time zone data file for time zone \f2TZ\fP.
|
||||
.SH "EXIT STATUS"
|
||||
The exit status is zero if a time zone was successfully obtained from the user,
|
||||
nonzero otherwise.
|
||||
.SH "SEE ALSO"
|
||||
newctime(3), tzfile(5), zdump(8), zic(8)
|
||||
.\" @(#)tzselect.8 1.3
|
41
commands/zoneinfo/tzselect.8.txt
Normal file
41
commands/zoneinfo/tzselect.8.txt
Normal file
|
@ -0,0 +1,41 @@
|
|||
NAME
|
||||
|
||||
tzselect - select a time zone
|
||||
|
||||
SYNOPSIS
|
||||
tzselect
|
||||
|
||||
DESCRIPTION
|
||||
The tzselect program asks the user for information about the
|
||||
current location, and outputs the resulting time zone
|
||||
description to standard output. The output is suitable as a
|
||||
value for the TZ environment variable.
|
||||
|
||||
All interaction with the user is done via standard input and
|
||||
standard error.
|
||||
|
||||
ENVIRONMENT VARIABLES
|
||||
AWK Name of a Posix-compliant awk program (default: awk).
|
||||
|
||||
TZDIR
|
||||
Name of the directory containing time zone data files
|
||||
(default: /usr/local/etc/zoneinfo).
|
||||
|
||||
FILES
|
||||
TZDIR/iso3166.tab
|
||||
Table of ISO 3166 2-letter country codes and country
|
||||
names.
|
||||
|
||||
TZDIR/zone.tab
|
||||
Table of country codes, latitude and longitude, TZ
|
||||
values, and descriptive comments.
|
||||
|
||||
TZDIR/TZ
|
||||
Time zone data file for time zone TZ.
|
||||
|
||||
EXIT STATUS
|
||||
The exit status is zero if a time zone was successfully
|
||||
obtained from the user, nonzero otherwise.
|
||||
|
||||
SEE ALSO
|
||||
newctime(3), tzfile(5), zdump(8), zic(8)
|
308
commands/zoneinfo/tzselect.ksh
Normal file
308
commands/zoneinfo/tzselect.ksh
Normal file
|
@ -0,0 +1,308 @@
|
|||
#! /bin/ksh
|
||||
|
||||
# '@(#)tzselect.ksh 1.8'
|
||||
|
||||
# Ask the user about the time zone, and output the resulting TZ value to stdout.
|
||||
# Interact with the user via stderr and stdin.
|
||||
|
||||
# Contributed by Paul Eggert.
|
||||
|
||||
# Porting notes:
|
||||
#
|
||||
# This script requires several features of the Korn shell.
|
||||
# If your host lacks the Korn shell,
|
||||
# you can use either of the following free programs instead:
|
||||
#
|
||||
# <a href=ftp://ftp.gnu.org/pub/gnu/>
|
||||
# Bourne-Again shell (bash)
|
||||
# </a>
|
||||
#
|
||||
# <a href=ftp://ftp.cs.mun.ca/pub/pdksh/pdksh.tar.gz>
|
||||
# Public domain ksh
|
||||
# </a>
|
||||
#
|
||||
# This script also uses several features of modern awk programs.
|
||||
# If your host lacks awk, or has an old awk that does not conform to Posix.2,
|
||||
# you can use either of the following free programs instead:
|
||||
#
|
||||
# <a href=ftp://ftp.gnu.org/pub/gnu/>
|
||||
# GNU awk (gawk)
|
||||
# </a>
|
||||
#
|
||||
# <a href=ftp://ftp.whidbey.net/pub/brennan/>
|
||||
# mawk
|
||||
# </a>
|
||||
|
||||
|
||||
# Specify default values for environment variables if they are unset.
|
||||
: ${AWK=awk}
|
||||
: ${TZDIR=$(pwd)}
|
||||
|
||||
# Check for awk Posix compliance.
|
||||
($AWK -v x=y 'BEGIN { exit 123 }') </dev/null >/dev/null 2>&1
|
||||
[ $? = 123 ] || {
|
||||
echo >&2 "$0: Sorry, your \`$AWK' program is not Posix compatible."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure the tables are readable.
|
||||
TZ_COUNTRY_TABLE=$TZDIR/iso3166.tab
|
||||
TZ_ZONE_TABLE=$TZDIR/zone.tab
|
||||
for f in $TZ_COUNTRY_TABLE $TZ_ZONE_TABLE
|
||||
do
|
||||
<$f || {
|
||||
echo >&2 "$0: time zone files are not set up correctly"
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
newline='
|
||||
'
|
||||
IFS=$newline
|
||||
|
||||
|
||||
# Work around a bug in bash 1.14.7 and earlier, where $PS3 is sent to stdout.
|
||||
case $(echo 1 | (select x in x; do break; done) 2>/dev/null) in
|
||||
?*) PS3=
|
||||
esac
|
||||
|
||||
|
||||
# Begin the main loop. We come back here if the user wants to retry.
|
||||
while
|
||||
|
||||
echo >&2 'Please identify a location' \
|
||||
'so that time zone rules can be set correctly.'
|
||||
|
||||
continent=
|
||||
country=
|
||||
region=
|
||||
|
||||
|
||||
# Ask the user for continent or ocean.
|
||||
|
||||
echo >&2 'Please select a continent or ocean.'
|
||||
|
||||
select continent in \
|
||||
Africa \
|
||||
Americas \
|
||||
Antarctica \
|
||||
'Arctic Ocean' \
|
||||
Asia \
|
||||
'Atlantic Ocean' \
|
||||
Australia \
|
||||
Europe \
|
||||
'Indian Ocean' \
|
||||
'Pacific Ocean' \
|
||||
'none - I want to specify the time zone using the Posix TZ format.'
|
||||
do
|
||||
case $continent in
|
||||
'')
|
||||
echo >&2 'Please enter a number in range.';;
|
||||
?*)
|
||||
case $continent in
|
||||
Americas) continent=America;;
|
||||
*' '*) continent=$(expr "$continent" : '\([^ ]*\)')
|
||||
esac
|
||||
break
|
||||
esac
|
||||
done
|
||||
case $continent in
|
||||
'')
|
||||
exit 1;;
|
||||
none)
|
||||
# Ask the user for a Posix TZ string. Check that it conforms.
|
||||
while
|
||||
echo >&2 'Please enter the desired value' \
|
||||
'of the TZ environment variable.'
|
||||
echo >&2 'For example, GST-10 is a zone named GST' \
|
||||
'that is 10 hours ahead (east) of UTC.'
|
||||
read TZ
|
||||
$AWK -v TZ="$TZ" 'BEGIN {
|
||||
tzname = "[^-+,0-9][^-+,0-9][^-+,0-9]+"
|
||||
time = "[0-2]?[0-9](:[0-5][0-9](:[0-5][0-9])?)?"
|
||||
offset = "[-+]?" time
|
||||
date = "(J?[0-9]+|M[0-9]+\.[0-9]+\.[0-9]+)"
|
||||
datetime = "," date "(/" time ")?"
|
||||
tzpattern = "^(:.*|" tzname offset "(" tzname \
|
||||
"(" offset ")?(" datetime datetime ")?)?)$"
|
||||
if (TZ ~ tzpattern) exit 1
|
||||
exit 0
|
||||
}'
|
||||
do
|
||||
echo >&2 "\`$TZ' is not a conforming" \
|
||||
'Posix time zone string.'
|
||||
done
|
||||
TZ_for_date=$TZ;;
|
||||
*)
|
||||
# Get list of names of countries in the continent or ocean.
|
||||
countries=$($AWK -F'\t' \
|
||||
-v continent="$continent" \
|
||||
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
|
||||
'
|
||||
/^#/ { next }
|
||||
$3 ~ ("^" continent "/") {
|
||||
if (!cc_seen[$1]++) cc_list[++ccs] = $1
|
||||
}
|
||||
END {
|
||||
while (getline <TZ_COUNTRY_TABLE) {
|
||||
if ($0 !~ /^#/) cc_name[$1] = $2
|
||||
}
|
||||
for (i = 1; i <= ccs; i++) {
|
||||
country = cc_list[i]
|
||||
if (cc_name[country]) {
|
||||
country = cc_name[country]
|
||||
}
|
||||
print country
|
||||
}
|
||||
}
|
||||
' <$TZ_ZONE_TABLE | sort -f)
|
||||
|
||||
|
||||
# If there's more than one country, ask the user which one.
|
||||
case $countries in
|
||||
*"$newline"*)
|
||||
echo >&2 'Please select a country.'
|
||||
select country in $countries
|
||||
do
|
||||
case $country in
|
||||
'') echo >&2 'Please enter a number in range.';;
|
||||
?*) break
|
||||
esac
|
||||
done
|
||||
|
||||
case $country in
|
||||
'') exit 1
|
||||
esac;;
|
||||
*)
|
||||
country=$countries
|
||||
esac
|
||||
|
||||
|
||||
# Get list of names of time zone rule regions in the country.
|
||||
regions=$($AWK -F'\t' \
|
||||
-v country="$country" \
|
||||
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
|
||||
'
|
||||
BEGIN {
|
||||
cc = country
|
||||
while (getline <TZ_COUNTRY_TABLE) {
|
||||
if ($0 !~ /^#/ && country == $2) {
|
||||
cc = $1
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
$1 == cc { print $4 }
|
||||
' <$TZ_ZONE_TABLE)
|
||||
|
||||
|
||||
# If there's more than one region, ask the user which one.
|
||||
case $regions in
|
||||
*"$newline"*)
|
||||
echo >&2 'Please select one of the following' \
|
||||
'time zone regions.'
|
||||
select region in $regions
|
||||
do
|
||||
case $region in
|
||||
'') echo >&2 'Please enter a number in range.';;
|
||||
?*) break
|
||||
esac
|
||||
done
|
||||
case $region in
|
||||
'') exit 1
|
||||
esac;;
|
||||
*)
|
||||
region=$regions
|
||||
esac
|
||||
|
||||
# Determine TZ from country and region.
|
||||
TZ=$($AWK -F'\t' \
|
||||
-v country="$country" \
|
||||
-v region="$region" \
|
||||
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
|
||||
'
|
||||
BEGIN {
|
||||
cc = country
|
||||
while (getline <TZ_COUNTRY_TABLE) {
|
||||
if ($0 !~ /^#/ && country == $2) {
|
||||
cc = $1
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
$1 == cc && $4 == region { print $3 }
|
||||
' <$TZ_ZONE_TABLE)
|
||||
|
||||
# Make sure the corresponding zoneinfo file exists.
|
||||
TZ_for_date=$TZDIR/$TZ
|
||||
<$TZ_for_date || {
|
||||
echo >&2 "$0: time zone files are not set up correctly"
|
||||
exit 1
|
||||
}
|
||||
esac
|
||||
|
||||
|
||||
# Use the proposed TZ to output the current date relative to UTC.
|
||||
# Loop until they agree in seconds.
|
||||
# Give up after 8 unsuccessful tries.
|
||||
|
||||
extra_info=
|
||||
for i in 1 2 3 4 5 6 7 8
|
||||
do
|
||||
TZdate=$(LANG=C TZ="$TZ_for_date" date)
|
||||
UTdate=$(LANG=C TZ=UTC0 date)
|
||||
TZsec=$(expr "$TZdate" : '.*:\([0-5][0-9]\)')
|
||||
UTsec=$(expr "$UTdate" : '.*:\([0-5][0-9]\)')
|
||||
case $TZsec in
|
||||
$UTsec)
|
||||
extra_info="
|
||||
Local time is now: $TZdate.
|
||||
Universal Time is now: $UTdate."
|
||||
break
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
# Output TZ info and ask the user to confirm.
|
||||
|
||||
echo >&2 ""
|
||||
echo >&2 "The following information has been given:"
|
||||
echo >&2 ""
|
||||
case $country+$region in
|
||||
?*+?*) echo >&2 " $country$newline $region";;
|
||||
?*+) echo >&2 " $country";;
|
||||
+) echo >&2 " TZ='$TZ'"
|
||||
esac
|
||||
echo >&2 ""
|
||||
echo >&2 "Therefore TZ='$TZ' will be used.$extra_info"
|
||||
echo >&2 "Is the above information OK?"
|
||||
|
||||
ok=
|
||||
select ok in Yes No
|
||||
do
|
||||
case $ok in
|
||||
'') echo >&2 'Please enter 1 for Yes, or 2 for No.';;
|
||||
?*) break
|
||||
esac
|
||||
done
|
||||
case $ok in
|
||||
'') exit 1;;
|
||||
Yes) break
|
||||
esac
|
||||
do :
|
||||
done
|
||||
|
||||
case $SHELL in
|
||||
*csh) file=.login line="setenv TZ '$TZ'";;
|
||||
*) file=.profile line="TZ='$TZ'; export TZ"
|
||||
esac
|
||||
|
||||
echo >&2 "
|
||||
You can make this change permanent for yourself by appending the line
|
||||
$line
|
||||
to the file '$file' in your home directory; then log out and log in again.
|
||||
|
||||
Here is that TZ value again, this time on standard output so that you
|
||||
can use the $0 command in shell scripts:"
|
||||
|
||||
echo "$TZ"
|
111
commands/zoneinfo/usno1988
Normal file
111
commands/zoneinfo/usno1988
Normal file
|
@ -0,0 +1,111 @@
|
|||
# @(#)usno1988 7.2
|
||||
#
|
||||
# From Arthur David Olson (1989-01-19):
|
||||
#
|
||||
# Here's some United States Naval Observatory time zone data from
|
||||
# February 1988. It's here mostly to convince you that the USNO has indeed
|
||||
# been updating its files (see its 1989 data elsewhere).
|
||||
#
|
||||
ANDORRA 1 H AHEAD OF UTC
|
||||
ARGENTINA 3 H BEHIND UTC
|
||||
BRASIL WEST 5 H BEHIND UTC (CRUZEIRO DO SUL)
|
||||
BRASIL CENTRAL 4 H BEHIND UTC (MANAUS)
|
||||
BRASIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SP, BRASILIA
|
||||
BRASIL 2 H BEHIND UTC ATLANTIC ISLANDS
|
||||
BRAZIL 5 H BEHIND UTC WEST (CRUZEIRO DO SUL)
|
||||
BRAZIL 4 H BEHIND UTC CENTRAL (MANAUS)
|
||||
BRAZIL 3 H BEHIND UTC COASTAL STATES, RIO, SP, BRASILIA
|
||||
BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS.
|
||||
BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS
|
||||
BULGARIA 2 H AHEAD OF UTC WINTER
|
||||
BULGARIA 3 H AHEAD OF UTC SUMMER MAR31 - SEP 85, 0100 LOCAL
|
||||
CHINA 8 H AHEAD OF UTC; ALL OF CHINA, INCL TAIWAN
|
||||
CUBA 5 H BEHIND UTC IN WINTER
|
||||
CUBA 4 H BEHIND UTC MAY 8 - OCT 8
|
||||
CYPRUS 2 H AHEAD UTC IN WINTER
|
||||
CYPRUS 3 H AHEAD UTC MAR 25 - SEP 30
|
||||
DENMARK 1 H AHEAD UTC IN WINTER
|
||||
DENMARK 2 H AHEAD UTC MAR 31 - SEP 30 , 0200 LOCAL
|
||||
DENMK. FAEROE IS 1 H AHEAD UTC MAR 31 - SEP 30 , 0200 LOCAL
|
||||
EGYPT 2 H AHEAD UTC
|
||||
EGYPT 3 H AHEAD UTC SUMMER (AFTER RAMADAN)
|
||||
ENGLAND ON UTC IN WINTER; WALES, SCOTLAND, N.I., CH.IS.
|
||||
ENGLAND 1 H AHEAD OF UTC; SUMMER TIL 28 OCT 0200 LOCAL
|
||||
FINLAND 2 H AHEAD OF UTC IN WINTER
|
||||
FINLAND 3 H AHEAD OF UTC MAR 25 - SEP 30
|
||||
FRANCE 1 H AHEAD OF UTC IN WINTER
|
||||
FRANCE 2 H AHEAD OF UTC MAR 31 - SEP 30 , 0100 LOCAL
|
||||
GREECE 2 H AHEAD OF UTC IN WINTER
|
||||
GREECE 3 H AHEAD OF UTC IN SUMMER EFF. 31MAR85 02/03 LOCAL
|
||||
GREECE 3 H AHEAD OF UTC MAR 25 - SEP 30
|
||||
GREENLAND 4 H BEHIND UTC IN THULE AIRBASE YEAR ROUND
|
||||
GREENLAND 3 H BEHIND UTC IN WINTER AT SONDRESTROM
|
||||
GREENLAND 2 H BEHIND UTC 30 MAR - 30 SEP 2200 LOCAL AT -"-
|
||||
GREENLAND 2 H BEHIND UTC AROUND SCORESBY SUND
|
||||
ICELAND ON UTC
|
||||
IRAN 3.5H AHEAD OF UTC
|
||||
IRELAND ON UTC IN WINTER
|
||||
IRELAND 1 H AHEAD OF UTC MAR 31 - OCT 23 0200 LOCAL
|
||||
ITALY 1 H AHEAD OF UTC IN WINTER
|
||||
ITALY 2 H AHEAD OF UTC MAR 31 - SEP 30, 0030 LOCAL
|
||||
JAMAICA 5 H BEHIND UTC IN WINTER
|
||||
JAMAICA 4 H BEHIND UTC APR 29 - OCT 29
|
||||
LIBYA 2 H AHEAD OF UTC
|
||||
MEXICO BAJA CAL N 8 H BEHIND UTC IN WINTER; NORTH BAJA CAL, TIJUANA
|
||||
MEXICO BAJA CAL N 7 H BEHIND UTC APR 29 - OCT 29
|
||||
MEXICO BAJA CAL S 7 H BEHIND UTC ALL YEAR; MAZATLAN
|
||||
MEXICO CENTRAL 6 H BEHIND UTC ALL YEAR; MEXICO CITY
|
||||
MONACO 1 H AHEAD UTC IN WINTER
|
||||
MONACO 2 H AHEAD UTC MAR 25 - SEP30
|
||||
PARAGUAY 4 H BEHIND UTC IN WINTER
|
||||
PARAGUAY 3 H BEHIND UTC SEP 30 - MAR 30
|
||||
POLAND 1 H AHEAD OF UTC IN WINTER
|
||||
POLAND 2 H AHEAD OF UTC MAR 24 - SEP 0200 LOCAL
|
||||
PORTUGAL ON UTC IN WINTER
|
||||
PORTUGAL 1 H AHEAD OF UTC IN SUMMER MAR 31 - SEP 29 0100 LOCAL
|
||||
PORTUGAL AZORES 1 H BEHIND UTC IN WINTER
|
||||
PORTUGAL AZORES ON UTC IN SUMMER MAR 31 - SEP 29
|
||||
PORTUGAL MADEIRA ON UTC ALL YEAR;
|
||||
ROMANIA 2 H AHEAD OF UTC IN WINTER
|
||||
ROMANIA 3 H AHEAD OF UTC APR 3 - SEP 24
|
||||
SCOTLAND SEE ENGLAND
|
||||
SWITZERLAND 1 H AHEAD OF UTC IN WINTER
|
||||
SWITZERLAND 2 H AHEAD OF UTC MAR 31 - SEP 30 0200 LOCAL
|
||||
TURKEY 3 H AHEAD OF UTC
|
||||
USA EASTERN 5 H BEHIND UTC IN WINTER; NEW YORK, WASHINGTON
|
||||
USA EASTERN 4 H BEHIND UTC APR 29 - OCT 29
|
||||
USA CENTRAL 6 H BEHIND UTC IN WINTER; CHICAGO, HOUSTON
|
||||
USA CENTRAL 5 H BEHIND UTC APR 29 - OCT 29
|
||||
USA MOUNTAIN 7 H BEHIND UTC IN WINTER; DENVER
|
||||
USA MOUNTAIN 6 H BEHIND UTC APR 29 - OCT 29
|
||||
USA PACIFIC 8 H BEHIND UTC IN WINTER; L.A., SAN FRANCISCO
|
||||
USA PACIFIC 7 H BEHIND UTC APR 29 - OCT 29
|
||||
USA ALASKA STD 9 H BEHIND UTC IN WINTER; MOST OF ALASKA (AKST)
|
||||
USA ALASKA STD 8 H BEHIND UTC APR 29 - OCT 29 (AKDT)
|
||||
USA ALEUTIAN 10 H BEHIND UTC IN WINTER; ISLANDS WEST OF 170W
|
||||
USA - " - 9 H BEHIND UTC APR 29 - OCT 29
|
||||
USA HAWAII 10 H BEHIND UTC ALL YEAR;
|
||||
USA BERING 11 H BEHIND UTC ALL YEAR; SAMOA, MIDWAY
|
||||
USSR WEST EUROP 3 H AHEAD OF UTC IN WINTER; LENINGRAD, MOSCOW
|
||||
USSR WEST EUROP 4 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL EUR 4 H AHEAD OF UTC IN WINTER; ROSTOV, BAKU
|
||||
USSR CENTRAL EUR 5 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST EUROP 5 H AHEAD OF UTC IN WINTER; SVERDLOVSK
|
||||
USSR EAST EUROP 6 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST SIBERIAN 6 H AHEAD OF UTC IN WINTER; TASHKENT, ALMA ATA
|
||||
USSR WEST SIBERIAN 7 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 7 H AHEAD OF UTC IN WINTER; NOVOSIBIRSK
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC IN WINTER; IRKUTSK
|
||||
USSR WEST-CENTRAL 9 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 9 H AHEAD OF UTC IN WINTER; YAKUTSK
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC IN WINTER; VLADIVOSTOK
|
||||
USSR CENTRAL SIB 11 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 11 H AHEAD OF UTC IN WINTER; MAGADAN
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC IN WINTER; PETROPAVLOVSK
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC IN WINTER; UELEN
|
||||
USSR EAST SIBERIA 14 H AHEAD OF UTC APR 1 - SEP 30
|
||||
WALES SEE ENGLAND
|
452
commands/zoneinfo/usno1989
Normal file
452
commands/zoneinfo/usno1989
Normal file
|
@ -0,0 +1,452 @@
|
|||
# @(#)usno1989 7.2
|
||||
#
|
||||
# From Arthur David Olson (1989-01-19):
|
||||
#
|
||||
# Here's time zone information from the United States Naval Observatory;
|
||||
# no corrections have been made, and there are some obvious challenges.
|
||||
# The USNO warns:
|
||||
# DUE TO FREQUENT CHANGES IN THE LOCAL LAWS GOVERNING DAYLIGHT
|
||||
# SAVING TIME, WE CANNOT GUARANTEE THE ACCURACY OF THIS
|
||||
# INFORMATION. PLEASE ALERT US TO ANY DISCREPANCY YOU MAY
|
||||
# DISCOVER.
|
||||
#
|
||||
AFGHANISTAN 4.5H AHEAD OF UTC
|
||||
ALBANIA 1 H AHEAD OF UTC
|
||||
ALBANIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ALBANIA (ESTIMATED)
|
||||
ALGERIA 1 H AHEAD OF UTC
|
||||
AMERICAN SAMOA 11 H BEHIND UTC
|
||||
ANDORRA 1 H AHEAD OF UTC
|
||||
ANDORRA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ANDORRA (ESTIMATED)
|
||||
ANGOLA 1 H AHEAD OF UTC
|
||||
ARGENTINA 3 H BEHIND UTC
|
||||
ARUBA 4 H BEHIND UTC ALSO BONAIRE, CURACAO,
|
||||
ARUBA ST.MAARTEN
|
||||
AUSTRALIA WEST 8 H AHEAD OF UTC PERTH, EXMOUTH
|
||||
AUSTRALIA N.T. 9.5H AHEAD OF UTC DARWIN NO ADVANCED TIME
|
||||
AUSTRALIA N.T. IN SUMMER
|
||||
AUSTRALIA SOUTH 9.5H AHEAD OF UTC ADELAIDE
|
||||
AUSTRALIA INCLUDING BROKEN HILL, NSW
|
||||
AUSTRALIA SOUTH 10.5H AHEAD OF UTC ADELAIDE OCT 30, '88-MAR
|
||||
AUSTRALIA SOUTH 18, '89 INCLUDING BROKEN
|
||||
AUSTRIALIA SOUTH HILL, NSW
|
||||
AUSTRALIA QUEENL 10 H AHEAD OF UTC
|
||||
AUSTRALIA NSW 10 H AHEAD OF UTC SYDNEY
|
||||
AUSTRALIA NSW 11 H AHEAD OF UTC SYDNEY OCT 30, '88-MAR 18,
|
||||
AUSTRALIA NSW '89
|
||||
AUSTRALIA TASM. 10 H AHEAD OF UTC HOBART
|
||||
AUSTRALIA TASM. 11 H AHEAD OF UTC HOBART OCT 30, '88-MAR 18,
|
||||
AUSTRALIA TASM. '89
|
||||
AUSTRIA 1 H AHEAD OF UTC
|
||||
AUSTRIA 2 H AHEAD OF UTC MAR 27 - SEPT 24
|
||||
AZORES SEE PORTUGAL
|
||||
BAHAMAS 5 H BEHIND UTC EXCLUDING TURKS AND CAICOS
|
||||
BAHAMAS ISLANDS)
|
||||
BAHAMAS 4 H BEHIND UTC APR 3 - OCT 29 (SAME
|
||||
BAHAMAS EXCLUSION)
|
||||
BAHRAIN 3 H AHEAD OF UTC
|
||||
BANGLADESH 6 H AHEAD OF UTC
|
||||
BARBADOS 4 H BEHIND UTC
|
||||
BELGIUM 1 H AHEAD OF UTC
|
||||
BELGIUM 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
BELIZE 6 H BEHIND UTC
|
||||
BENIN PEOPLES REP 1 H AHEAD OF UTC DAHOMEY
|
||||
BERMUDA 4 H BEHIND UTC
|
||||
BERMUDA 3 H BEHIND UTC APR 3 - OCT 29
|
||||
BHUTAN 6 H AHEAD OF UTC
|
||||
BOLIVIA 4 H BEHIND UTC
|
||||
BONAIRE 4 H BEHIND UTC ALSO ARUBA,CURACAO,
|
||||
BONAIRE ST.MAARTEN, SABA
|
||||
BOTSWANA 2 H AHEAD OF UTC
|
||||
BRAZIL WEST 5 H BEHIND UTC TERRITORY OF ACRE
|
||||
BRAZIL WEST 4 H BEHIND UTC ACRE OCT 23, '88-FEB 11,
|
||||
BRAZIL '89 (ESTIMATED)
|
||||
BRAZIL CENTRAL 4 H BEHIND UTC MANAUS
|
||||
BRAZIL CENTRAL 3 H BEHIND UTC MANAUS OCT 23, '88-FEB 11,
|
||||
BRAZIL CENTRAL '89 (ESTIMATED)
|
||||
BRAZIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SAO
|
||||
BRAZIL EAST PAULO, BRASILIA
|
||||
BRAZIL EAST 2 H BEHIND UTC COASTAL STATES, RIO, SAO
|
||||
BRAZIL PAULO, BRASILIA OCT 23,
|
||||
BRAZIL '88-FEB 11, '89
|
||||
BRAZIL (ESTIMATED)
|
||||
BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS, FERNANDO
|
||||
BRAZIL DE NORONHA
|
||||
BRAZIL 1 H BEHIND UTC OCT 23, '88-FEB 11, '89
|
||||
BRAZIL (ESTIMATED)
|
||||
BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS.
|
||||
BRITISH VIRGIN I. 4 H BEHIND UTC
|
||||
BRUNEI 8 H AHEAD OF UTC
|
||||
BULGARIA 2 H AHEAD OF UTC
|
||||
BULGARIA 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
BURKINA FASO ON UTC
|
||||
BURMA 6.5H AHEAD OF UTC
|
||||
BURUNDI 2 H AHEAD OF UTC
|
||||
CAMBODIA SEE KAMPUCHEA
|
||||
CAMEROON 1 H AHEAD OF UTC
|
||||
CANADA NEW FDL 3.5H BEHIND UTC ST.JOHN'S
|
||||
CANADA NEW FDL 1.5H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA ATLANTIC 4 H BEHIND UTC HALIFAX
|
||||
CANADA ATLANTIC 3 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA EASTERN 5 H BEHIND UTC TORONTO, MONTREAL, OTTAWA
|
||||
CANADA EASTERN 4 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA CENTRAL 6 H BEHIND UTC REGINA, WINNIPEG
|
||||
CANADA CENTRAL 5 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA MOUNTAIN 7 H BEHIND UTC CALGARY, EDMONTON
|
||||
CANADA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA PACIFIC 8 H BEHIND UTC VANCOUVER
|
||||
CANADA PACIFIC 7 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA YUKON SAME AS PACIFIC DAWSON
|
||||
CAPE VERDE 1 H BEHIND UTC
|
||||
CAYMAN ISLANDS 5 H BEHIND UTC
|
||||
CAROLINE ISLAND 10 H AHEAD OF UTC EXCLUDING PONAPE IS.,
|
||||
CAROLINE ISLAND KUSAIE, AND PINGELAP
|
||||
CENTRAL AFRICA 1 H AHEAD OF UTC
|
||||
CEYLON 5.5H AHEAD OF UTC, SEE SRI LANKA
|
||||
CHAD 1 H AHEAD OF UTC
|
||||
CHANNEL ISLANDS SEE ENGLAND
|
||||
CHILE 4 H BEHIND UTC CONTINENTAL
|
||||
CHILE 3 H BEHIND UTC OCT 9, '88-MAR 11, '89
|
||||
CHILE 6 H BEHIND UTC EASTER ISLAND
|
||||
CHILE 5 H BEHIND UTC OCT 9, '88-MAR 11, '89
|
||||
CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN
|
||||
CHINA 9 H AHEAD OF UTC APR 17 - SEP 10
|
||||
COCOS (Keeling) I. 6.5H AHEAD OF UTC
|
||||
COLOMBIA 5 H BEHIND UTC
|
||||
COMOROS 3 H AHEAD OF UTC
|
||||
CONGO 1 H AHEAD OF UTC
|
||||
COOK ISLANDS 10 H BEHIND UTC
|
||||
COOK ISLANDS 9.5H BEHIND UTC OCT 30, '88-MAR 24, '89
|
||||
COOK ISLANDS (ESTIMATED)
|
||||
COSTA RICA 6 H BEHIND UTC
|
||||
COTE D'IVOIRE ON UTC
|
||||
CUBA 5 H BEHIND UTC
|
||||
CUBA 4 H BEHIND UTC MAR 20 - OCT 8
|
||||
CURACAO 4 H BEHIND UTC ALSO BONAIRE, ARUBA,
|
||||
CURACAO ST.MAARTEN
|
||||
CYPRUS 2 H AHEAD OF UTC
|
||||
CYPRUS 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
CZECHOSLOVAKIA 1 H AHEAD OF UTC
|
||||
CZECHOSLOVAKIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DENMARK 1 H AHEAD OF UTC
|
||||
DENMARK 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DENMK. FAEROE IS 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DJIBOUTI 3 H AHEAD OF UTC
|
||||
DOMINICA 4 H BEHIND UTC
|
||||
DOMINICAN REP 4 H BEHIND UTC
|
||||
ECUADOR 5 H BEHIND UTC CONTINENTAL
|
||||
ECUADOR 6 H BEHIND UTC GALAPAGOS ISLANDS
|
||||
EGYPT 2 H AHEAD OF UTC
|
||||
EGYPT 3 H AHEAD OF UTC MAY 17 - SEP 30 (AFTER
|
||||
EGYPT RAMADAN)
|
||||
EL SALVADOR 6 H BEHIND UTC
|
||||
ENGLAND ON UTC (WALES, SCOTLAND, N.I.,
|
||||
ENGLAND CH. IS.)
|
||||
ENGLAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
ENEZUELA 4 H BEHIND UTC
|
||||
EQUITORIAL GUINEA 1 H AHEAD OF UTC
|
||||
ETHIOPIA 3 H AHEAD OF UTC
|
||||
FALKLAND ISLANDS 4 H BEHIND UTC
|
||||
FALKLAND ISLANDS 3 H BEHIND UTC SEP 11, '88-APR 15, '89
|
||||
FALKLAND ISLANDS (ESTIMATED)
|
||||
FAROE ISLAND ON UTC
|
||||
FAROE ISLAND 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FIJI 12 H AHEAD OF UTC
|
||||
FINLAND 2 H AHEAD OF UTC
|
||||
FINLAND 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FRANCE 1 H AHEAD OF UTC
|
||||
FRANCE 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FRENCH GUIANA 3 H BEHIND UTC
|
||||
FRENCH POLYNESIA 9 H BEHIND UTC GAMBIER ISLAND
|
||||
FRENCH POLYNESIA 9.5H BEHIND UTC MARQUESAS ISLANDS
|
||||
FRENCH POLYNESIA 10 H BEHIND UTC SOCIETY ISLANDS, TUBUAI
|
||||
FRENCH POLYNESIA ISLANDS, TUAMOTU ISLAND,
|
||||
FRENCH POLYNESIA TAHITI
|
||||
GABON 1 H AHEAD OF UTC
|
||||
GAMBIA ON UTC
|
||||
GERMANY ALL 1 H AHEAD OF UTC
|
||||
GERMANY ALL 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GHANA ON UTC
|
||||
GIBRALTAR 1 H AHEAD OF UTC
|
||||
GIBRALTAR 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GREECE 2 H AHEAD OF UTC
|
||||
GREECE 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GREENLAND 4 H BEHIND UTC THULE AIRBASE YEAR ROUND
|
||||
GREENLAND 3 H BEHIND UTC ANGMAGSSALIK AND W. COAST
|
||||
GREENLAND 2 H BEHIND UTC MAR 27 - SEP 24
|
||||
GREENLAND 1 H BEHIND UTC SCORESBYSUND
|
||||
GREENLAND ON UTC MAR 27 - SEP 24
|
||||
GRENADA 4 H BEHIND UTC
|
||||
GUADELOUPE 4 H BEHIND UTC ST. BARTHELEMY, NORTHERN
|
||||
GUADELOUPE ST. MARTIN MARTINIQUE
|
||||
GUAM 10 H AHEAD OF UTC
|
||||
GUATEMALA 6 H BEHIND UTC
|
||||
GUINEA ON UTC
|
||||
GUINEA BISSAU ON UTC
|
||||
GUINEA REPUBLIC ON UTC
|
||||
GUINEA EQUATORIAL 1 H AHEAD OF UTC
|
||||
GUYANA 3 H BEHIND UTC
|
||||
HAITI 5 H BEHIND UTC
|
||||
HAITI 4 H BEHIND UTC APR 3 - OCT 29
|
||||
HOLLAND SEE NETHERLANDS
|
||||
HONDURAS 6 H BEHIND UTC
|
||||
HONG KONG 8 H AHEAD OF UTC
|
||||
HUNGARY 1 H AHEAD OF UTC
|
||||
HUNGARY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ICELAND ON UTC
|
||||
INDIA 5.5H AHEAD OF UTC INCLUDING ANDAMAN ISLANDS
|
||||
INDONESIA WEST 7 H AHEAD OF UTC SUMATRA, JAVA, BALI,
|
||||
INDONESIA WEST JAKARTA
|
||||
INDONESIA CENTRAL 8 H AHEAD OF UTC KALIMANTAN, SULAWESI
|
||||
INDONESIA EAST 9 H AHEAD OF UTC IRIAN, BARAT
|
||||
IRAN 3.5H AHEAD OF UTC
|
||||
IRAQ 3 H AHEAD OF UTC
|
||||
IRAQ 4 H AHEAD OF UTC APR 1 - SEP 30
|
||||
IRELAND ON UTC
|
||||
IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
ISRAEL 2 H AHEAD OF UTC
|
||||
ISRAEL 3 H AHEAD OF UTC APR 10 - SEP 3
|
||||
ITALY 1 H AHEAD OF UTC
|
||||
ITALY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
IVORY COAST ON UTC
|
||||
IWAN 8 H AHEAD OF UTC
|
||||
JAMAICA 5 H BEHIND UTC
|
||||
JAPAN 9 H AHEAD OF UTC
|
||||
JOHNSTON ISLAND 10 H BEHIND UTC
|
||||
JORDAN 2 H AHEAD OF UTC
|
||||
JORDAN 3 H AHEAD OF UTC APR 1 - OCT 6
|
||||
KAMPUCHEA 7 H AHEAD OF UTC
|
||||
KENYA 3 H AHEAD OF UTC
|
||||
KIRIBATI, REP OF 12 H AHEAD OF UTC CANTON, ENDERBURY ISLANDS
|
||||
KIRIBATI, REP OF 11 H AHEAD OF UTC CHRISTMAS ISLAND
|
||||
KOREA 9 H AHEAD OF UTC
|
||||
KOREA, REP OF 9 H AHEAD OF UTC
|
||||
KOREA, REP OF 10 H AHEAD OF UTC MAY 8 - OCT 8
|
||||
KUWAIT 3 H AHEAD OF UTC
|
||||
KUSAIE, PINGELAP 12 H AHEAD OF UTC INCLUDING MARSHALL IS.,
|
||||
KUSAIE, PINGELAP EXCLUDING KWAJALEIN)
|
||||
KWAJALEIN 12 H BEHIND UTC
|
||||
LAOS 7 H AHEAD OF UTC
|
||||
LEBANON 2 H AHEAD OF UTC
|
||||
LEBANON 3 H AHEAD OF UTC JUN 1 - OCT 31
|
||||
LEEWARD ISLANDS 4 H BEHIND UTC ANTIGUA, DOMINICA,
|
||||
LEEWARD ISLANDS MONTSERRAT, ST.
|
||||
LEEWARD ISLAANDS CHRISTOPHER, ST. KITTS,
|
||||
LEEWARD ISLANDS NEVIS, ANGUILLA
|
||||
LESOTHO 2 H AHEAD OF UTC
|
||||
LIBERIA ON UTC
|
||||
LIBYAN ARAB 1 H AHEAD OF UTC JAMAHIRIYA/LIBYA
|
||||
LIBYAN ARAB 2 H AHEAD OF UTC APR 1 - SEP 30 JAMAHIRIYA/LIBYA
|
||||
LIECHTENSTEIN 1 H AHEAD OF UTC
|
||||
LIECHTENSTEIN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
LUXEMBOURG 1 H AHEAD OF UTC
|
||||
LUXEMBOURG 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MACAO 8 H AHEAD OF UTC
|
||||
MADAGASCAR 3 H AHEAD OF UTC
|
||||
MADEIRA SEE PORTUGAL
|
||||
MALAWI 2 H AHEAD OF UTC
|
||||
MALAYSIA 8 H AHEAD OF UTC
|
||||
MALDIVES 5 H AHEAD OF UTC
|
||||
MALI ON UTC
|
||||
MALTA 1 H AHEAD OF UTC
|
||||
MALTA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MARTINIQUE 4 H BEHIND UTC
|
||||
MAURITANIA ON UTC
|
||||
MAURITIUS 4 H AHEAD OF UTC
|
||||
MARIANA ISLAND 10 H AHEAD OF UTC EXCLUDING GUAM
|
||||
MEXICO BAJA CAL N 7 H BEHIND UTC BAJA CALIFORNIA SUR AND
|
||||
MEXICO BAJA CAL N N. PACIFIC COAST (STATES
|
||||
MEXICO BAJA CAL N OF SINALOA AND SONORA)
|
||||
MEXICO BAJA CAL N 8 H BEHIND UTC ABOVE 28TH PARALLAL APR 3
|
||||
MEXICO BAJA CAL N - OCT 29
|
||||
MEXICO BAJA CAL N 7 H BEHIND UTC ABOVE 28TH PARALLAL APR 3
|
||||
MEXICO BAJA CAL N - 0CT 29
|
||||
MEXICO 6 H BEHIND UTC STATES OF DURANGO,
|
||||
MEXICO COAHUILA, NUEVO LEON,
|
||||
MEXICO TAMAULIPAS
|
||||
MEXICO 5 H BEHIND UTC STATES OF DURANGO,
|
||||
MEXICO COAHUILA, NUEVO LEON,
|
||||
MEXICO TAMAULIPAS APR 3 - OCT 29
|
||||
MEXICO 6 H BEHIND UTC GENERAL MEXICO, STATES OF
|
||||
MEXICO CAMPECHE, QUINTANA ROO AND
|
||||
MEXICO YUCATAN
|
||||
MIDWAY ISLAND 11 H BEHIND UTC
|
||||
MONACO 1 H AHEAD OF UTC
|
||||
MONACO 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MONGOLIA 8 H AHEAD OF UTC
|
||||
MONGOLIA 9 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MONTSERRAT 4 H BEHIND UTC
|
||||
MOROCCO ON UTC
|
||||
MOZAMBIQUE 2 H AHEAD OF UTC
|
||||
NAMIBIA 2 H AHEAD OF UTC
|
||||
NAURU, REP OF 12 H AHEAD OF UTC
|
||||
NEPAL 5H45M AHEAD OF UTC
|
||||
NETHERLANDS 1 H AHEAD OF UTC
|
||||
NETHERLANDS 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
NETHERLANDS 4 H BEHIND UTC ANTILLES AND SOUTHERN ST.
|
||||
NETHERLANDS MAARTEN
|
||||
NEW CALEDONIA 11 H AHEAD OF UTC
|
||||
NEW HEBRIDES SEE VANUATU
|
||||
NEW ZEALAND 12 H AHEAD OF UTC (EXCLUDING CHATHAM ISLAND)
|
||||
NEW ZEALAND 13 H AHEAD OF UTC OCT 30, '88-MAR 4, '89
|
||||
NEW ZEALAND 12H45M AHEAD OF UTC CHATHAM ISLAND
|
||||
NICARAGUA 6 H BEHIND UTC
|
||||
NIGER 1 H AHEAD OF UTC
|
||||
NIGERIA 1 H AHEAD OF UTC
|
||||
NIUE ISLAND 11 H BEHIND UTC
|
||||
NORFOLK ISLAND 11H30M AHEAD OF UTC
|
||||
NORTHERN IRELAND ON UTC WALES, SCOTLAND, N.I.,
|
||||
NORTHERN IRELAND CH.IS.
|
||||
NORTHERN IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
NORWAY 1 H AHEAD OF UTC
|
||||
NORWAY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
OGO ON UTC
|
||||
OMAN 4 H AHEAD OF UTC
|
||||
PACIFIC ISLAND T.T.
|
||||
PALAU ISLAND 9 H AHEAD OF UTC
|
||||
PAKISTAN 5 H AHEAD OF UTC
|
||||
PANAMA 5 H BEHIND UTC
|
||||
PAPUA NEW GUINEA 10 H AHEAD OF UTC INCLUDING BOUGAINVILLE
|
||||
PAPUA NEW GUINEA ISLAND
|
||||
PARAGUAY 4 H BEHIND UTC
|
||||
PARAGUAY 3 H BEHIND UTC OCT 1, '88-MAR 31, '89
|
||||
PERU 5 H BEHIND UTC
|
||||
PHILIPPINES 8 H AHEAD OF UTC
|
||||
PONAPE ISLAND 11 H AHEAD OF UTC
|
||||
POLAND 1 H AHEAD OF UTC
|
||||
POLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PORTUGAL MAINLAND ON UTC
|
||||
PORTUGAL MAINLAND 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PORTUGAL AZORES 1 H BEHIND UTC
|
||||
PORTUGAL AZORES ON UTC MAR 27 - SEP 24
|
||||
PORTUGAL MADEIRA ON UTC
|
||||
PORTUGAL MADEIRA 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PUERTO RICO 4 H BEHIND UTC
|
||||
QATAR 3 H AHEAD OF UTC
|
||||
ROMANIA 2 H AHEAD OF UTC
|
||||
ROMANIA 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
RUSSIA SEE USSR
|
||||
RWANDA 2 H AHEAD OF UTC
|
||||
SABA 4 H BEHIND UTC ALSO BONAIRE, CURACAO,
|
||||
SAMOA 11 H BEHIND UTC
|
||||
SAN MARINO 1 H AHEAD OF UTC
|
||||
SAN MARINO 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SAN SALVADOR 6 H BEHIND UTC
|
||||
SAO TOME ISLAND ON UTC AND PRINCIPE ISLAND
|
||||
SAUDI ARABIA 3 H AHEAD OF UTC
|
||||
SCOTLAND SEE ENGLAND
|
||||
SENEGAL ON UTC
|
||||
SEYCHELLES 4 H AHEAD OF UTC
|
||||
SIERRA LEONE ON UTC
|
||||
SINGAPORE 8 H AHEAD OF UTC
|
||||
SOLOMON ISLANDS 11 H AHEAD OF UTC EXCLUDING BOUGAINVILLE
|
||||
SOLOMON ISLANDS ISLAND
|
||||
SOMALI 3 H AHEAD OF UTC
|
||||
SOUTH AFRICA 2 H AHEAD OF UTC
|
||||
SPAIN CANARY IS ON UTC
|
||||
SPAIN CANARY IS 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SPAIN 1 H AHEAD OF UTC CONTINENTAL, BALEARIC AND
|
||||
SPAIN MALLORCA ISLANDS
|
||||
SPAIN 2 H AHEAD OF UTC CONTINENTAL, BALEARIC AND
|
||||
SPAIN MALLORCA ISLANDS MAR 27 -
|
||||
SPAIN SEP 24
|
||||
SPAIN MAINLAND 1 H AHEAD OF UTC MELILLA
|
||||
SPAIN MAINLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SRI LANKA 5H30M AHEAD OF UTC
|
||||
ST.MAARTEN
|
||||
ST.KITTS-NEVIS 4 H BEHIND UTC
|
||||
ST.LUCIA 4 H BEHIND UTC
|
||||
ST.PIERRE 3 H BEHIND UTC INCLUDING MIQUELON
|
||||
ST.PIERRE 2 H BEHIND UTC INLCUDING MIQUELON APR 3
|
||||
ST.PIERRE - OCT 29
|
||||
ST.VINCENT 4 H BEHIND UTC INCLUDING THE GRENADINES
|
||||
ST. HELENA ON UTC
|
||||
SURINAME 3 H BEHIND UTC
|
||||
SWAZILAND 2 H AHEAD OF UTC
|
||||
SWEDEN 1 H AHEAD OF UTC
|
||||
SWEDEN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SWITZERLAND 1 H AHEAD OF UTC
|
||||
SWITZERLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SYRIA 2 H AHEAD OF UTC
|
||||
SYRIA 3 H AHEAD OF UTC MAR 15 - OCT 30
|
||||
TAHITI 10 H BEHIND UTC
|
||||
TANZANIA 3 H AHEAD OF UTC
|
||||
THAILAND 7 H AHEAD OF UTC
|
||||
TRINIDAD / TOBAGO 4 H BEHIND UTC
|
||||
TUNISIA 1 H AHEAD OF UTC
|
||||
TUNISIA 2 H AHEAD OF UTC APR 10 - SEP 24
|
||||
TURKEY 2 H AHEAD OF UTC
|
||||
TURKEY 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
TURKS AND CAICOS 5 H BEHIND UTC
|
||||
TURKS AND CAICOS 4 H BEHIND UTC APR 3 - OCT 29
|
||||
TUVALU 12 H AHEAD OF UTC
|
||||
UDAN 2 H AHEAD OF UTC
|
||||
UGANDA 3 H AHEAD OF UTC
|
||||
UNITED ARAB EMIR. 4 H AHEAD OF UTC ABU DHABI, DUBAI, SHARJAH,
|
||||
UNITED ARAB EMIR RAS AL KHAIMAH
|
||||
UNITED KINGDOM ON UTC WALES, SCOTLAND, N.I., CH.
|
||||
UNITED KINGDOM IS.
|
||||
UNITED KINGDOM 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
UNITED STATES SEE USA
|
||||
UPPER VOLTA ON UTC
|
||||
URUGUAY 3 H BEHIND UTC
|
||||
URUGUAY 2 H BEHIND UTC DEC 11, '88-FEB 25, '89
|
||||
URAGUAY (ESTIMATED)
|
||||
USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
|
||||
USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
|
||||
USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON
|
||||
USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30
|
||||
USA MOUNTAIN 7 H BEHIND UTC DENVER
|
||||
USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30
|
||||
USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO
|
||||
USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30
|
||||
USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST)
|
||||
USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT)
|
||||
USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W
|
||||
USA - " - 9 H BEHIND UTC APR 3 - OCT 30
|
||||
USA HAWAII 10 H BEHIND UTC
|
||||
USA BERING 11 H BEHIND UTC SAMOA, MIDWAY
|
||||
USA FOR SPECIFIC INFO ON USA ZONES/TIMES CALL DOT 202-426-4520
|
||||
USSR WEST EUROP 3 H AHEAD OF UTC LENINGRAD, MOSCOW
|
||||
USSR WEST EUROP 4 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL EUR 4 H AHEAD OF UTC ROSTOV, BAKU
|
||||
USSR CENTRAL EUR 5 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST EUROP 5 H AHEAD OF UTC SVERDLOVSK
|
||||
USSR EAST EUROP 6 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST SIBERIAN 6 H AHEAD OF UTC TASHKENT, ALMA ATA
|
||||
USSR WEST SIBERIAN 7 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 7 H AHEAD OF UTC NOVOSIBIRSK
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC IRKUTSK
|
||||
USSR WEST-CENTRAL 9 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 9 H AHEAD OF UTC YAKUTSK
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC VLADIVOSTOK
|
||||
USSR CENTRAL SIB 11 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 11 H AHEAD OF UTC MAGADAN
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC PETROPAVLOVSK
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC UELEN
|
||||
USSR EAST SIBERIA 14 H AHEAD OF UTC APR 1 - SEP 30
|
||||
VANUATU 11 H AHEAD OF UTC (NEW HEBRIDES)
|
||||
VANUATU 12 H AHEAD OF UTC SEP 25, '88-MAR 25, '89
|
||||
VANUATU (ESTIMATED)
|
||||
VATICAN 1 H AHEAD OF UTC
|
||||
VATICAN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
VIETNAM 7 H AHEAD OF UTC
|
||||
VIRGIN ISLANDS 4 H BEHIND UTC ST.CROIX, ST.THOMAS,
|
||||
VIRGIN ISLANDS ST.JOHN
|
||||
WAKE ISLAND 12 H AHEAD OF UTC
|
||||
WALES SEE ENGLAND
|
||||
WALLIS/FUTUNA IS. 12 H AHEAD OF UTC
|
||||
WINDWARD ISLANDS 4 H BEHIND UTC GRENADA, ST. LUCIA
|
||||
YEMEN 3 H AHEAD OF UTC BOTH REPUBLICS
|
||||
YUGOSLAVIA 1 H AHEAD OF UTC
|
||||
YUGOSLAVIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ZAIRE EAST 1 H AHEAD OF UTC KINSHASA MBANDAKA
|
||||
ZAIRE WEST 2 H AHEAD OF UTC LUBUMBASHI, KASAI, KIVU,
|
||||
ZAIRE WEST HAUT-ZAIRE, SHABA
|
||||
ZAMBIA 2 H AHEAD OF UTC
|
||||
ZIMBABWE 2 H AHEAD OF UTC
|
452
commands/zoneinfo/usno1989a
Normal file
452
commands/zoneinfo/usno1989a
Normal file
|
@ -0,0 +1,452 @@
|
|||
# @(#)usno1989a 7.4
|
||||
#
|
||||
# From Arthur David Olson (1994-02-07):
|
||||
#
|
||||
# Here's time zone information from the United States Naval Observatory,
|
||||
# with corrections from Paul Eggert.
|
||||
# The USNO warns:
|
||||
# DUE TO FREQUENT CHANGES IN THE LOCAL LAWS GOVERNING DAYLIGHT
|
||||
# SAVING TIME, WE CANNOT GUARANTEE THE ACCURACY OF THIS
|
||||
# INFORMATION. PLEASE ALERT US TO ANY DISCREPANCY YOU MAY
|
||||
# DISCOVER.
|
||||
#
|
||||
AFGHANISTAN 4.5H AHEAD OF UTC
|
||||
ALBANIA 1 H AHEAD OF UTC
|
||||
ALBANIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ALBANIA (ESTIMATED)
|
||||
ALGERIA 1 H AHEAD OF UTC
|
||||
AMERICAN SAMOA 11 H BEHIND UTC
|
||||
ANDORRA 1 H AHEAD OF UTC
|
||||
ANDORRA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ANDORRA (ESTIMATED)
|
||||
ANGOLA 1 H AHEAD OF UTC
|
||||
ARGENTINA 3 H BEHIND UTC
|
||||
ARUBA 4 H BEHIND UTC ALSO BONAIRE, CURACAO,
|
||||
ARUBA ST.MAARTEN
|
||||
AUSTRALIA WEST 8 H AHEAD OF UTC PERTH, EXMOUTH
|
||||
AUSTRALIA N.T. 9.5H AHEAD OF UTC DARWIN NO ADVANCED TIME
|
||||
AUSTRALIA N.T. IN SUMMER
|
||||
AUSTRALIA SOUTH 9.5H AHEAD OF UTC ADELAIDE
|
||||
AUSTRALIA INCLUDING BROKEN HILL, NSW
|
||||
AUSTRALIA SOUTH 10.5H AHEAD OF UTC ADELAIDE OCT 30, '88-MAR
|
||||
AUSTRALIA SOUTH 18, '89 INCLUDING BROKEN
|
||||
AUSTRIALIA SOUTH HILL, NSW
|
||||
AUSTRALIA QUEENL 10 H AHEAD OF UTC
|
||||
AUSTRALIA NSW 10 H AHEAD OF UTC SYDNEY
|
||||
AUSTRALIA NSW 11 H AHEAD OF UTC SYDNEY OCT 30, '88-MAR 18,
|
||||
AUSTRALIA NSW '89
|
||||
AUSTRALIA TASM. 10 H AHEAD OF UTC HOBART
|
||||
AUSTRALIA TASM. 11 H AHEAD OF UTC HOBART OCT 30, '88-MAR 18,
|
||||
AUSTRALIA TASM. '89
|
||||
AUSTRIA 1 H AHEAD OF UTC
|
||||
AUSTRIA 2 H AHEAD OF UTC MAR 27 - SEPT 24
|
||||
AZORES SEE PORTUGAL
|
||||
BAHAMAS 5 H BEHIND UTC EXCLUDING TURKS AND CAICOS
|
||||
BAHAMAS ISLANDS)
|
||||
BAHAMAS 4 H BEHIND UTC APR 3 - OCT 29 (SAME
|
||||
BAHAMAS EXCLUSION)
|
||||
BAHRAIN 3 H AHEAD OF UTC
|
||||
BANGLADESH 6 H AHEAD OF UTC
|
||||
BARBADOS 4 H BEHIND UTC
|
||||
BELGIUM 1 H AHEAD OF UTC
|
||||
BELGIUM 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
BELIZE 6 H BEHIND UTC
|
||||
BENIN PEOPLES REP 1 H AHEAD OF UTC DAHOMEY
|
||||
BERMUDA 4 H BEHIND UTC
|
||||
BERMUDA 3 H BEHIND UTC APR 3 - OCT 29
|
||||
BHUTAN 6 H AHEAD OF UTC
|
||||
BOLIVIA 4 H BEHIND UTC
|
||||
BONAIRE 4 H BEHIND UTC ALSO ARUBA,CURACAO,
|
||||
BONAIRE ST.MAARTEN, SABA
|
||||
BOTSWANA 2 H AHEAD OF UTC
|
||||
BRAZIL WEST 5 H BEHIND UTC TERRITORY OF ACRE
|
||||
BRAZIL WEST 4 H BEHIND UTC ACRE OCT 23, '88-FEB 11,
|
||||
BRAZIL '89 (ESTIMATED)
|
||||
BRAZIL CENTRAL 4 H BEHIND UTC MANAUS
|
||||
BRAZIL CENTRAL 3 H BEHIND UTC MANAUS OCT 23, '88-FEB 11,
|
||||
BRAZIL CENTRAL '89 (ESTIMATED)
|
||||
BRAZIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SAO
|
||||
BRAZIL EAST PAULO, BRASILIA
|
||||
BRAZIL EAST 2 H BEHIND UTC COASTAL STATES, RIO, SAO
|
||||
BRAZIL PAULO, BRASILIA OCT 23,
|
||||
BRAZIL '88-FEB 11, '89
|
||||
BRAZIL (ESTIMATED)
|
||||
BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS, FERNANDO
|
||||
BRAZIL DE NORONHA
|
||||
BRAZIL 1 H BEHIND UTC OCT 23, '88-FEB 11, '89
|
||||
BRAZIL (ESTIMATED)
|
||||
BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS.
|
||||
BRITISH VIRGIN I. 4 H BEHIND UTC
|
||||
BRUNEI 8 H AHEAD OF UTC
|
||||
BULGARIA 2 H AHEAD OF UTC
|
||||
BULGARIA 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
BURKINA FASO ON UTC
|
||||
BURMA 6.5H AHEAD OF UTC
|
||||
BURUNDI 2 H AHEAD OF UTC
|
||||
CAMBODIA SEE KAMPUCHEA
|
||||
CAMEROON 1 H AHEAD OF UTC
|
||||
CANADA NEW FDL 3.5H BEHIND UTC ST.JOHN'S
|
||||
CANADA NEW FDL 1.5H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA ATLANTIC 4 H BEHIND UTC HALIFAX
|
||||
CANADA ATLANTIC 3 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA EASTERN 5 H BEHIND UTC TORONTO, MONTREAL, OTTAWA
|
||||
CANADA EASTERN 4 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA CENTRAL 6 H BEHIND UTC REGINA, WINNIPEG
|
||||
CANADA CENTRAL 5 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA MOUNTAIN 7 H BEHIND UTC CALGARY, EDMONTON
|
||||
CANADA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA PACIFIC 8 H BEHIND UTC VANCOUVER
|
||||
CANADA PACIFIC 7 H BEHIND UTC APR 3 - OCT 29
|
||||
CANADA YUKON SAME AS PACIFIC DAWSON
|
||||
CAPE VERDE 1 H BEHIND UTC
|
||||
CAYMAN ISLANDS 5 H BEHIND UTC
|
||||
CAROLINE ISLAND 10 H AHEAD OF UTC EXCLUDING PONAPE IS.,
|
||||
CAROLINE ISLAND KUSAIE, AND PINGELAP
|
||||
CENTRAL AFRICA 1 H AHEAD OF UTC
|
||||
CEYLON 5.5H AHEAD OF UTC, SEE SRI LANKA
|
||||
CHAD 1 H AHEAD OF UTC
|
||||
CHANNEL ISLANDS SEE ENGLAND
|
||||
CHILE 4 H BEHIND UTC CONTINENTAL
|
||||
CHILE 3 H BEHIND UTC OCT 9, '88-MAR 11, '89
|
||||
CHILE 6 H BEHIND UTC EASTER ISLAND
|
||||
CHILE 5 H BEHIND UTC OCT 9, '88-MAR 11, '89
|
||||
CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN
|
||||
CHINA 9 H AHEAD OF UTC APR 17 - SEP 10
|
||||
COCOS (Keeling) I. 6.5H AHEAD OF UTC
|
||||
COLOMBIA 5 H BEHIND UTC
|
||||
COMOROS 3 H AHEAD OF UTC
|
||||
CONGO 1 H AHEAD OF UTC
|
||||
COOK ISLANDS 10 H BEHIND UTC
|
||||
COOK ISLANDS 9.5H BEHIND UTC OCT 30, '88-MAR 24, '89
|
||||
COOK ISLANDS (ESTIMATED)
|
||||
COSTA RICA 6 H BEHIND UTC
|
||||
COTE D'IVOIRE ON UTC
|
||||
CUBA 5 H BEHIND UTC
|
||||
CUBA 4 H BEHIND UTC MAR 20 - OCT 8
|
||||
CURACAO 4 H BEHIND UTC ALSO BONAIRE, ARUBA,
|
||||
CURACAO ST.MAARTEN
|
||||
CYPRUS 2 H AHEAD OF UTC
|
||||
CYPRUS 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
CZECHOSLOVAKIA 1 H AHEAD OF UTC
|
||||
CZECHOSLOVAKIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DENMARK 1 H AHEAD OF UTC
|
||||
DENMARK 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DENMK. FAEROE IS 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
DJIBOUTI 3 H AHEAD OF UTC
|
||||
DOMINICA 4 H BEHIND UTC
|
||||
DOMINICAN REP 4 H BEHIND UTC
|
||||
ECUADOR 5 H BEHIND UTC CONTINENTAL
|
||||
ECUADOR 6 H BEHIND UTC GALAPAGOS ISLANDS
|
||||
EGYPT 2 H AHEAD OF UTC
|
||||
EGYPT 3 H AHEAD OF UTC MAY 17 - SEP 30 (AFTER
|
||||
EGYPT RAMADAN)
|
||||
EL SALVADOR 6 H BEHIND UTC
|
||||
ENGLAND ON UTC (WALES, SCOTLAND, N.I.,
|
||||
ENGLAND CH. IS.)
|
||||
ENGLAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
EQUATORIAL GUINEA 1 H AHEAD OF UTC
|
||||
ETHIOPIA 3 H AHEAD OF UTC
|
||||
FALKLAND ISLANDS 4 H BEHIND UTC
|
||||
FALKLAND ISLANDS 3 H BEHIND UTC SEP 11, '88-APR 15, '89
|
||||
FALKLAND ISLANDS (ESTIMATED)
|
||||
FAROE ISLAND ON UTC
|
||||
FAROE ISLAND 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FIJI 12 H AHEAD OF UTC
|
||||
FINLAND 2 H AHEAD OF UTC
|
||||
FINLAND 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FRANCE 1 H AHEAD OF UTC
|
||||
FRANCE 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
FRENCH GUIANA 3 H BEHIND UTC
|
||||
FRENCH POLYNESIA 9 H BEHIND UTC GAMBIER ISLAND
|
||||
FRENCH POLYNESIA 9.5H BEHIND UTC MARQUESAS ISLANDS
|
||||
FRENCH POLYNESIA 10 H BEHIND UTC SOCIETY ISLANDS, TUBUAI
|
||||
FRENCH POLYNESIA ISLANDS, TUAMOTU ISLAND,
|
||||
FRENCH POLYNESIA TAHITI
|
||||
GABON 1 H AHEAD OF UTC
|
||||
GAMBIA ON UTC
|
||||
GERMANY ALL 1 H AHEAD OF UTC
|
||||
GERMANY ALL 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GHANA ON UTC
|
||||
GIBRALTAR 1 H AHEAD OF UTC
|
||||
GIBRALTAR 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GREECE 2 H AHEAD OF UTC
|
||||
GREECE 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
GREENLAND 4 H BEHIND UTC THULE AIRBASE YEAR ROUND
|
||||
GREENLAND 3 H BEHIND UTC ANGMAGSSALIK AND W. COAST
|
||||
GREENLAND 2 H BEHIND UTC MAR 27 - SEP 24
|
||||
GREENLAND 1 H BEHIND UTC SCORESBYSUND
|
||||
GREENLAND ON UTC MAR 27 - SEP 24
|
||||
GRENADA 4 H BEHIND UTC
|
||||
GUADELOUPE 4 H BEHIND UTC ST. BARTHELEMY, NORTHERN
|
||||
GUADELOUPE ST. MARTIN MARTINIQUE
|
||||
GUAM 10 H AHEAD OF UTC
|
||||
GUATEMALA 6 H BEHIND UTC
|
||||
GUINEA ON UTC
|
||||
GUINEA BISSAU ON UTC
|
||||
GUINEA REPUBLIC ON UTC
|
||||
GUINEA EQUATORIAL 1 H AHEAD OF UTC
|
||||
GUYANA 3 H BEHIND UTC
|
||||
HAITI 5 H BEHIND UTC
|
||||
HAITI 4 H BEHIND UTC APR 3 - OCT 29
|
||||
HOLLAND SEE NETHERLANDS
|
||||
HONDURAS 6 H BEHIND UTC
|
||||
HONG KONG 8 H AHEAD OF UTC
|
||||
HUNGARY 1 H AHEAD OF UTC
|
||||
HUNGARY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ICELAND ON UTC
|
||||
INDIA 5.5H AHEAD OF UTC INCLUDING ANDAMAN ISLANDS
|
||||
INDONESIA WEST 7 H AHEAD OF UTC SUMATRA, JAVA, BALI,
|
||||
INDONESIA WEST JAKARTA
|
||||
INDONESIA CENTRAL 8 H AHEAD OF UTC KALIMANTAN, SULAWESI
|
||||
INDONESIA EAST 9 H AHEAD OF UTC IRIAN, BARAT
|
||||
IRAN 3.5H AHEAD OF UTC
|
||||
IRAQ 3 H AHEAD OF UTC
|
||||
IRAQ 4 H AHEAD OF UTC APR 1 - SEP 30
|
||||
IRELAND ON UTC
|
||||
IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
ISRAEL 2 H AHEAD OF UTC
|
||||
ISRAEL 3 H AHEAD OF UTC APR 10 - SEP 3
|
||||
ITALY 1 H AHEAD OF UTC
|
||||
ITALY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
IVORY COAST ON UTC
|
||||
JAMAICA 5 H BEHIND UTC
|
||||
JAPAN 9 H AHEAD OF UTC
|
||||
JOHNSTON ISLAND 10 H BEHIND UTC
|
||||
JORDAN 2 H AHEAD OF UTC
|
||||
JORDAN 3 H AHEAD OF UTC APR 1 - OCT 6
|
||||
KAMPUCHEA 7 H AHEAD OF UTC
|
||||
KENYA 3 H AHEAD OF UTC
|
||||
KIRIBATI, REP OF 12 H AHEAD OF UTC CANTON, ENDERBURY ISLANDS
|
||||
KIRIBATI, REP OF 11 H AHEAD OF UTC CHRISTMAS ISLAND
|
||||
KOREA 9 H AHEAD OF UTC
|
||||
KOREA, REP OF 9 H AHEAD OF UTC
|
||||
KOREA, REP OF 10 H AHEAD OF UTC MAY 8 - OCT 8
|
||||
KUWAIT 3 H AHEAD OF UTC
|
||||
KUSAIE, PINGELAP 12 H AHEAD OF UTC INCLUDING MARSHALL IS.,
|
||||
KUSAIE, PINGELAP EXCLUDING KWAJALEIN)
|
||||
KWAJALEIN 12 H BEHIND UTC
|
||||
LAOS 7 H AHEAD OF UTC
|
||||
LEBANON 2 H AHEAD OF UTC
|
||||
LEBANON 3 H AHEAD OF UTC JUN 1 - OCT 31
|
||||
LEEWARD ISLANDS 4 H BEHIND UTC ANTIGUA, DOMINICA,
|
||||
LEEWARD ISLANDS MONTSERRAT, ST.
|
||||
LEEWARD ISLAANDS CHRISTOPHER, ST. KITTS,
|
||||
LEEWARD ISLANDS NEVIS, ANGUILLA
|
||||
LESOTHO 2 H AHEAD OF UTC
|
||||
LIBERIA ON UTC
|
||||
LIBYAN ARAB 1 H AHEAD OF UTC JAMAHIRIYA/LIBYA
|
||||
LIBYAN ARAB 2 H AHEAD OF UTC APR 1 - SEP 30 JAMAHIRIYA/LIBYA
|
||||
LIECHTENSTEIN 1 H AHEAD OF UTC
|
||||
LIECHTENSTEIN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
LUXEMBOURG 1 H AHEAD OF UTC
|
||||
LUXEMBOURG 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MACAO 8 H AHEAD OF UTC
|
||||
MADAGASCAR 3 H AHEAD OF UTC
|
||||
MADEIRA SEE PORTUGAL
|
||||
MALAWI 2 H AHEAD OF UTC
|
||||
MALAYSIA 8 H AHEAD OF UTC
|
||||
MALDIVES 5 H AHEAD OF UTC
|
||||
MALI ON UTC
|
||||
MALTA 1 H AHEAD OF UTC
|
||||
MALTA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MARTINIQUE 4 H BEHIND UTC
|
||||
MAURITANIA ON UTC
|
||||
MAURITIUS 4 H AHEAD OF UTC
|
||||
MARIANA ISLANDS 10 H AHEAD OF UTC EXCLUDING GUAM
|
||||
MEXICO BAJA CAL N 7 H BEHIND UTC BAJA CALIFORNIA SUR AND
|
||||
MEXICO BAJA CAL N N. PACIFIC COAST (STATES
|
||||
MEXICO BAJA CAL N OF SINALOA AND SONORA)
|
||||
MEXICO BAJA CAL N 8 H BEHIND UTC ABOVE 28TH PARALLAL APR 3
|
||||
MEXICO BAJA CAL N - OCT 29
|
||||
MEXICO BAJA CAL N 7 H BEHIND UTC ABOVE 28TH PARALLAL APR 3
|
||||
MEXICO BAJA CAL N - 0CT 29
|
||||
MEXICO 6 H BEHIND UTC STATES OF DURANGO,
|
||||
MEXICO COAHUILA, NUEVO LEON,
|
||||
MEXICO TAMAULIPAS
|
||||
MEXICO 5 H BEHIND UTC STATES OF DURANGO,
|
||||
MEXICO COAHUILA, NUEVO LEON,
|
||||
MEXICO TAMAULIPAS APR 3 - OCT 29
|
||||
MEXICO 6 H BEHIND UTC GENERAL MEXICO, STATES OF
|
||||
MEXICO CAMPECHE, QUINTANA ROO AND
|
||||
MEXICO YUCATAN
|
||||
MIDWAY ISLAND 11 H BEHIND UTC
|
||||
MONACO 1 H AHEAD OF UTC
|
||||
MONACO 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MONGOLIA 8 H AHEAD OF UTC
|
||||
MONGOLIA 9 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
MONTSERRAT 4 H BEHIND UTC
|
||||
MOROCCO ON UTC
|
||||
MOZAMBIQUE 2 H AHEAD OF UTC
|
||||
NAMIBIA 2 H AHEAD OF UTC
|
||||
NAURU, REP OF 12 H AHEAD OF UTC
|
||||
NEPAL 5H45M AHEAD OF UTC
|
||||
NETHERLANDS 1 H AHEAD OF UTC
|
||||
NETHERLANDS 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
NETHERLANDS 4 H BEHIND UTC ANTILLES AND SOUTHERN ST.
|
||||
NETHERLANDS MAARTEN
|
||||
NEW CALEDONIA 11 H AHEAD OF UTC
|
||||
NEW HEBRIDES SEE VANUATU
|
||||
NEW ZEALAND 12 H AHEAD OF UTC (EXCLUDING CHATHAM ISLAND)
|
||||
NEW ZEALAND 13 H AHEAD OF UTC OCT 30, '88-MAR 4, '89
|
||||
NEW ZEALAND 12H45M AHEAD OF UTC CHATHAM ISLAND
|
||||
NICARAGUA 6 H BEHIND UTC
|
||||
NIGER 1 H AHEAD OF UTC
|
||||
NIGERIA 1 H AHEAD OF UTC
|
||||
NIUE ISLAND 11 H BEHIND UTC
|
||||
NORFOLK ISLAND 11H30M AHEAD OF UTC
|
||||
NORTHERN IRELAND ON UTC WALES, SCOTLAND, N.I.,
|
||||
NORTHERN IRELAND CH.IS.
|
||||
NORTHERN IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
NORWAY 1 H AHEAD OF UTC
|
||||
NORWAY 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
OMAN 4 H AHEAD OF UTC
|
||||
PACIFIC ISLAND T.T.
|
||||
PALAU ISLANDS 9 H AHEAD OF UTC
|
||||
PAKISTAN 5 H AHEAD OF UTC
|
||||
PANAMA 5 H BEHIND UTC
|
||||
PAPUA NEW GUINEA 10 H AHEAD OF UTC INCLUDING BOUGAINVILLE
|
||||
PAPUA NEW GUINEA ISLAND
|
||||
PARAGUAY 4 H BEHIND UTC
|
||||
PARAGUAY 3 H BEHIND UTC OCT 1, '88-MAR 31, '89
|
||||
PERU 5 H BEHIND UTC
|
||||
PHILIPPINES 8 H AHEAD OF UTC
|
||||
PONAPE ISLAND 11 H AHEAD OF UTC
|
||||
POLAND 1 H AHEAD OF UTC
|
||||
POLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PORTUGAL MAINLAND ON UTC
|
||||
PORTUGAL MAINLAND 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PORTUGAL AZORES 1 H BEHIND UTC
|
||||
PORTUGAL AZORES ON UTC MAR 27 - SEP 24
|
||||
PORTUGAL MADEIRA ON UTC
|
||||
PORTUGAL MADEIRA 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
PUERTO RICO 4 H BEHIND UTC
|
||||
QATAR 3 H AHEAD OF UTC
|
||||
ROMANIA 2 H AHEAD OF UTC
|
||||
ROMANIA 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
RUSSIA SEE USSR
|
||||
RWANDA 2 H AHEAD OF UTC
|
||||
SABA 4 H BEHIND UTC ALSO BONAIRE, CURACAO,
|
||||
SAMOA 11 H BEHIND UTC
|
||||
SAN MARINO 1 H AHEAD OF UTC
|
||||
SAN MARINO 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SAN SALVADOR 6 H BEHIND UTC
|
||||
SAO TOME ISLAND ON UTC AND PRINCIPE ISLAND
|
||||
SAUDI ARABIA 3 H AHEAD OF UTC
|
||||
SCOTLAND SEE ENGLAND
|
||||
SENEGAL ON UTC
|
||||
SEYCHELLES 4 H AHEAD OF UTC
|
||||
SIERRA LEONE ON UTC
|
||||
SINGAPORE 8 H AHEAD OF UTC
|
||||
SOLOMON ISLANDS 11 H AHEAD OF UTC EXCLUDING BOUGAINVILLE
|
||||
SOLOMON ISLANDS ISLAND
|
||||
SOMALI 3 H AHEAD OF UTC
|
||||
SOUTH AFRICA 2 H AHEAD OF UTC
|
||||
SPAIN CANARY IS ON UTC
|
||||
SPAIN CANARY IS 1 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SPAIN 1 H AHEAD OF UTC CONTINENTAL, BALEARIC AND
|
||||
SPAIN MALLORCA ISLANDS
|
||||
SPAIN 2 H AHEAD OF UTC CONTINENTAL, BALEARIC AND
|
||||
SPAIN MALLORCA ISLANDS MAR 27 -
|
||||
SPAIN SEP 24
|
||||
SPAIN MAINLAND 1 H AHEAD OF UTC MELILLA
|
||||
SPAIN MAINLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SRI LANKA 5H30M AHEAD OF UTC
|
||||
ST. MAARTEN
|
||||
ST. KITTS-NEVIS 4 H BEHIND UTC
|
||||
ST. LUCIA 4 H BEHIND UTC
|
||||
ST. PIERRE 3 H BEHIND UTC INCLUDING MIQUELON
|
||||
ST. PIERRE 2 H BEHIND UTC INLCUDING MIQUELON APR 3
|
||||
ST. PIERRE - OCT 29
|
||||
ST. VINCENT 4 H BEHIND UTC INCLUDING THE GRENADINES
|
||||
ST. HELENA ON UTC
|
||||
SUDAN 2 H AHEAD OF UTC
|
||||
SURINAME 3 H BEHIND UTC
|
||||
SWAZILAND 2 H AHEAD OF UTC
|
||||
SWEDEN 1 H AHEAD OF UTC
|
||||
SWEDEN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SWITZERLAND 1 H AHEAD OF UTC
|
||||
SWITZERLAND 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
SYRIA 2 H AHEAD OF UTC
|
||||
SYRIA 3 H AHEAD OF UTC MAR 15 - OCT 30
|
||||
TAHITI 10 H BEHIND UTC
|
||||
TAIWAN 8 H AHEAD OF UTC
|
||||
TANZANIA 3 H AHEAD OF UTC
|
||||
THAILAND 7 H AHEAD OF UTC
|
||||
TOGO ON UTC
|
||||
TRINIDAD / TOBAGO 4 H BEHIND UTC
|
||||
TUNISIA 1 H AHEAD OF UTC
|
||||
TUNISIA 2 H AHEAD OF UTC APR 10 - SEP 24
|
||||
TURKEY 2 H AHEAD OF UTC
|
||||
TURKEY 3 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
TURKS AND CAICOS 5 H BEHIND UTC
|
||||
TURKS AND CAICOS 4 H BEHIND UTC APR 3 - OCT 29
|
||||
TUVALU 12 H AHEAD OF UTC
|
||||
UGANDA 3 H AHEAD OF UTC
|
||||
UNITED ARAB EMIR. 4 H AHEAD OF UTC ABU DHABI, DUBAI, SHARJAH,
|
||||
UNITED ARAB EMIR RAS AL KHAIMAH
|
||||
UNITED KINGDOM ON UTC WALES, SCOTLAND, N.I., CH.
|
||||
UNITED KINGDOM IS.
|
||||
UNITED KINGDOM 1 H AHEAD OF UTC MAR 27 - OCT 22
|
||||
UNITED STATES SEE USA
|
||||
UPPER VOLTA ON UTC
|
||||
URUGUAY 3 H BEHIND UTC
|
||||
URUGUAY 2 H BEHIND UTC DEC 11, '88-FEB 25, '89
|
||||
URAGUAY (ESTIMATED)
|
||||
USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
|
||||
USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
|
||||
USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON
|
||||
USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30
|
||||
USA MOUNTAIN 7 H BEHIND UTC DENVER
|
||||
USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30
|
||||
USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO
|
||||
USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30
|
||||
USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST)
|
||||
USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT)
|
||||
USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W
|
||||
USA - " - 9 H BEHIND UTC APR 3 - OCT 30
|
||||
USA HAWAII 10 H BEHIND UTC
|
||||
USA BERING 11 H BEHIND UTC SAMOA, MIDWAY
|
||||
USA FOR SPECIFIC INFO ON USA ZONES/TIMES CALL DOT 202-426-4520
|
||||
USSR WEST EUROP 3 H AHEAD OF UTC LENINGRAD, MOSCOW
|
||||
USSR WEST EUROP 4 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL EUR 4 H AHEAD OF UTC ROSTOV, BAKU
|
||||
USSR CENTRAL EUR 5 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST EUROP 5 H AHEAD OF UTC SVERDLOVSK
|
||||
USSR EAST EUROP 6 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST SIBERIAN 6 H AHEAD OF UTC TASHKENT, ALMA ATA
|
||||
USSR WEST SIBERIAN 7 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 7 H AHEAD OF UTC NOVOSIBIRSK
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR WEST-CENTRAL 8 H AHEAD OF UTC IRKUTSK
|
||||
USSR WEST-CENTRAL 9 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 9 H AHEAD OF UTC YAKUTSK
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR CENTRAL SIB 10 H AHEAD OF UTC VLADIVOSTOK
|
||||
USSR CENTRAL SIB 11 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 11 H AHEAD OF UTC MAGADAN
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 12 H AHEAD OF UTC PETROPAVLOVSK
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC APR 1 - SEP 30
|
||||
USSR EAST SIBERIA 13 H AHEAD OF UTC UELEN
|
||||
USSR EAST SIBERIA 14 H AHEAD OF UTC APR 1 - SEP 30
|
||||
VANUATU 11 H AHEAD OF UTC (NEW HEBRIDES)
|
||||
VANUATU 12 H AHEAD OF UTC SEP 25, '88-MAR 25, '89
|
||||
VANUATU (ESTIMATED)
|
||||
VATICAN 1 H AHEAD OF UTC
|
||||
VATICAN 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
VENEZUELA 4 H BEHIND UTC
|
||||
VIETNAM 7 H AHEAD OF UTC
|
||||
VIRGIN ISLANDS 4 H BEHIND UTC ST.CROIX, ST.THOMAS,
|
||||
VIRGIN ISLANDS ST.JOHN
|
||||
WAKE ISLAND 12 H AHEAD OF UTC
|
||||
WALES SEE ENGLAND
|
||||
WALLIS/FUTUNA IS. 12 H AHEAD OF UTC
|
||||
WINDWARD ISLANDS 4 H BEHIND UTC GRENADA, ST. LUCIA
|
||||
YEMEN 3 H AHEAD OF UTC BOTH REPUBLICS
|
||||
YUGOSLAVIA 1 H AHEAD OF UTC
|
||||
YUGOSLAVIA 2 H AHEAD OF UTC MAR 27 - SEP 24
|
||||
ZAIRE EAST 1 H AHEAD OF UTC KINSHASA MBANDAKA
|
||||
ZAIRE WEST 2 H AHEAD OF UTC LUBUMBASHI, KASAI, KIVU,
|
||||
ZAIRE WEST HAUT-ZAIRE, SHABA
|
||||
ZAMBIA 2 H AHEAD OF UTC
|
||||
ZIMBABWE 2 H AHEAD OF UTC
|
326
commands/zoneinfo/usno1995
Normal file
326
commands/zoneinfo/usno1995
Normal file
|
@ -0,0 +1,326 @@
|
|||
# @(#)usno1995 7.5
|
||||
#
|
||||
# From Arthur David Olson (1995-12-21):
|
||||
#
|
||||
# Here's time zone information from the United States Naval Observatory
|
||||
# via http://tycho.usno.navy.mil/tzones.html. See USNO's note at the end.
|
||||
World Time Zones
|
||||
For selected countries, the local standard time offset from UTC is given,
|
||||
with daylight savings time where observed.
|
||||
Time: Thu Dec 21 17:43:00 utc 1995
|
||||
Afghanistan: +4.5 hours
|
||||
Albania: +1 hours (Local summer +2 hours)
|
||||
Algeria: +1 hours (Local summer +2 hours)
|
||||
American Samoa: -11 hours
|
||||
Andorra: +1 hours (Local summer +2 hours)
|
||||
Angola: +1 hours
|
||||
Anguilla: -4 hours
|
||||
Antarctica: -2 hours (Local summer -3 hours)
|
||||
Antigua: -4 hours
|
||||
Argentina: -3 hours
|
||||
Argentina western prov: -4 hours
|
||||
Armenia: +4 hours (Local summer +5 hours)
|
||||
Aruba: -4 hours
|
||||
Ascension: 0 hours
|
||||
Australia Northern Territory: +9.5 hours
|
||||
Australia Lord Howe Island: +10.5 hours (Local summer +11 hours)
|
||||
Australia New South Wales: +10 hours (Local summer +11 hours)
|
||||
Australia Queensland: +10 hours
|
||||
Australia Victoria: +10 hours (Local summer +11 hours)
|
||||
Australia Australian Captial Territory: +10 hours (Local summer +11 hours)
|
||||
Australia South: +9.5 hours (Local summer +10.5 hours)
|
||||
Australia Tasmania: +10 hours (Local summer +11 hours)
|
||||
Australia Western: +8 hours
|
||||
Austria: +1 hours (Local summer +2 hours)
|
||||
Azerbajian: +3 hours
|
||||
Azores: -1 hours (Local summer 0 hours)
|
||||
Bahamas: -5 hours (Local summer -4 hours)
|
||||
Bahrain: +3 hours
|
||||
Balearic Islands: +1 hours (Local summer +2 hours)
|
||||
Bangladesh: +6 hours
|
||||
Barbados: -4 hours
|
||||
Belarus: +2 hours (Local summer +3 hours)
|
||||
Belgium: +1 hours (Local summer +2 hours)
|
||||
Belize: -6 hours
|
||||
Benin: +1 hours
|
||||
Bermuda: -4 hours (Local summer -3 hours)
|
||||
Bhutan: +6 hours
|
||||
Bolivia: -4 hours
|
||||
Bonaire: -4 hours
|
||||
Bosnia Hercegovina: +1 hours (Local summer +2 hours)
|
||||
Botswana: +2 hours
|
||||
Brazil Acre: -4 hours (Local summer -5 hours)
|
||||
Brazil Atlantic Islands: -1 hours (Local summer -2 hours)
|
||||
Brazil East: -3 hours (Local summer -1 hours)
|
||||
Brazil West: -4 hours (Local summer -3 hours)
|
||||
British Virgin Islands: -4 hours
|
||||
Brunei: +8 hours
|
||||
Bulgaria: +2 hours (Local summer +3 hours)
|
||||
Burkina Faso: 0 hours
|
||||
Burundi: +2 hours
|
||||
Cambodia: +7 hours
|
||||
Cameroon: +1 hours
|
||||
Canada Central: -6 hours (Local summer -5 hours)
|
||||
Canada Eastern: -5 hours (Local summer -4 hours)
|
||||
Canada Mountain: -7 hours (Local summer -6 hours)
|
||||
Canada Yukon & Pacific: -8 hours (Local summer -7 hours)
|
||||
Canada Atlantic: -4 hours (Local summer -3 hours)
|
||||
Canada Newfoundland: -3.5 hours (Local summer -2.5 hours)
|
||||
Canary Islands: 0 hours (Local summer +1 hours)
|
||||
Canton Enderbury Islands: -11 hours
|
||||
Cape Verde: -1 hours
|
||||
Caroline Island: +11 hours
|
||||
Cayman Islands: -5 hours
|
||||
Central African Rep: +1 hours
|
||||
Chad: +1 hours
|
||||
Channel Islands: 0 hours (Local summer +1 hours)
|
||||
Chatham Island: +12.75 hours (Local summer +13.75 hours)
|
||||
Chile: -4 hours (Local summer -3 hours)
|
||||
China People's Rep: +8 hours
|
||||
Christmas Islands: -10 hours
|
||||
Cocos (Keeling) Islands: ( hours (Local summer ) hours)
|
||||
Colombia: -5 hours
|
||||
Congo: +1 hours
|
||||
Cook Islands: -10 hours
|
||||
Costa Rica: -6 hours
|
||||
Cote d'Ivoire: 0 hours
|
||||
Croatia: +1 hours (Local summer +2 hours)
|
||||
Cuba: -5 hours (Local summer -4 hours)
|
||||
Curacao: -4 hours
|
||||
Cyprus: +2 hours (Local summer +3 hours)
|
||||
Czech Republic: +1 hours (Local summer +2 hours)
|
||||
Dahomey: +1 hours
|
||||
Denmark: +1 hours (Local summer +2 hours)
|
||||
Djibouti: +3 hours
|
||||
Dominica: -4 hours
|
||||
Dominican Republic: -4 hours
|
||||
Easter Island: -6 hours (Local summer -5 hours)
|
||||
Ecuador: -5 hours
|
||||
Egypt: +2 hours (Local summer +3 hours)
|
||||
El Salvador: -6 hours
|
||||
England: 0 hours (Local summer +1 hours)
|
||||
Equitorial Guinea: +1 hours
|
||||
Eritrea: +3 hours
|
||||
Estonia: +2 hours (Local summer +3 hours)
|
||||
Ethiopia: +3 hours
|
||||
Falkland Islands: -4 hours (Local summer -3 hours)
|
||||
Faroe Island: 0 hours (Local summer +1 hours)
|
||||
Fiji: +12 hours
|
||||
Finland: +2 hours (Local summer +3 hours)
|
||||
France: +1 hours (Local summer +2 hours)
|
||||
French Guiana: -3 hours
|
||||
French Polynesia: -10 hours
|
||||
Gabon: +1 hours
|
||||
Galapagos Islands: -6 hours
|
||||
Gambia: 0 hours
|
||||
Gambier Island: -9 hours
|
||||
Georgia: +4 hours
|
||||
Germany: +1 hours (Local summer +2 hours)
|
||||
Ghana: 0 hours
|
||||
Gibraltar: +1 hours (Local summer +2 hours)
|
||||
Greece: +2 hours (Local summer +3 hours)
|
||||
Greenland: -3 hours (Local summer -2 hours)
|
||||
Greenland Thule: -4 hours (Local summer -3 hours)
|
||||
Greenland Scoresbysun: -1 hours (Local summer 0 hours)
|
||||
Grenada: -4 hours
|
||||
Grenadines: -4 hours
|
||||
Guadeloupe: -4 hours
|
||||
Guam: +10 hours
|
||||
Guatemala: -6 hours
|
||||
Guinea: 0 hours
|
||||
Guinea Bissau: - hours (Local summer 0 hours)
|
||||
Guyana: -3 hours
|
||||
Haiti: -5 hours (Local summer -4 hours)
|
||||
Honduras: -6 hours
|
||||
Hong kong: +8 hours
|
||||
Hungary: +1 hours (Local summer +2 hours)
|
||||
Iceland: 0 hours
|
||||
India: +5.5 hours
|
||||
Indonesia Central: +8 hours
|
||||
Indonesia East: +9 hours
|
||||
Indonesia West: +7 hours
|
||||
Iran: +3.5 hours
|
||||
Iraq: +3 hours (Local summer +4 hours)
|
||||
Ireland Republic of: 0 hours (Local summer +1 hours)
|
||||
Israel: +2 hours (Local summer +3 hours)
|
||||
Italy: +1 hours (Local summer +2 hours)
|
||||
Jamaica: -5 hours
|
||||
Japan: +9 hours
|
||||
Johnston Island: -10 hours
|
||||
Jordan: +2 hours (Local summer +3 hours)
|
||||
Kazakhstan: +6 hours (Local summer +7 hours)
|
||||
Kenya: +3 hours
|
||||
Kiribati: +12 hours
|
||||
Korea Dem Republic of: +9 hours
|
||||
Korea Republic of: +9 hours
|
||||
Kusaie: +12 hours
|
||||
Kuwait: +3 hours
|
||||
Kwajalein: -12 hours
|
||||
Kyrgyzstan: +5 hours (Local summer +6 hours)
|
||||
Laos: +7 hours
|
||||
Latvia: +2 hours (Local summer +3 hours)
|
||||
Lebanon: +2 hours (Local summer +3 hours)
|
||||
Leeward Islands: -4 hours
|
||||
Lesotho: +2 hours
|
||||
Liberia: 0 hours
|
||||
Libya: +2 hours
|
||||
Lithuania: +2 hours (Local summer +3 hours)
|
||||
Luxembourg: +1 hours (Local summer +2 hours)
|
||||
Macedonia: +1 hours (Local summer +2 hours)
|
||||
Madagascar: +3 hours
|
||||
Madeira: 0 hours (Local summer +1 hours)
|
||||
Malawi: +2 hours
|
||||
Malaysia: +8 hours
|
||||
Maldives: +5 hours
|
||||
Mali: 0 hours
|
||||
Mallorca Islands: +1 hours (Local summer +2 hours)
|
||||
Malta: +1 hours (Local summer +2 hours)
|
||||
Mariana Island: +10 hours
|
||||
Marquesas Islands: -9.5 hours
|
||||
Marshall Islands: +12 hours
|
||||
Martinique: -4 hours
|
||||
Mauritania: 0 hours
|
||||
Mauritius: +4 hours
|
||||
Mayotte: +3 hours
|
||||
Melilla: +1 hours (Local summer +2 hours)
|
||||
Mexico: -6 hours
|
||||
Mexico Baja Calif Norte: -8 hours (Local summer -7 hours)
|
||||
Mexico Nayarit: -7 hours
|
||||
Mexico Sinaloa: -7 hours
|
||||
Mexico Sonora: -7 hours
|
||||
Midway Island: -11 hours
|
||||
Moldova: +2 hours (Local summer +3 hours)
|
||||
Moldovian Rep Pridnestrovye: +2 hours (Local summer +3 hours)
|
||||
Monaco: +1 hours (Local summer +2 hours)
|
||||
Mongolia: +8 hours
|
||||
Morocco: 0 hours
|
||||
Mozambique: +2 hours
|
||||
Myanmar: +6.5 hours
|
||||
Namibia: +1 hours (Local summer +2 hours)
|
||||
Nauru Republic of: +12 hours
|
||||
Nepal: +5.75 hours
|
||||
Netherlands: +1 hours (Local summer +2 hours)
|
||||
Netherlands Antilles: -4 hours
|
||||
Nevis Montserrat: -4 hours
|
||||
New Caledonia: +11 hours
|
||||
New Hebrides: +11 hours
|
||||
New Zealand: +12 hours (Local summer +13 hours)
|
||||
Nicaragua: -6 hours (Local summer -5 hours)
|
||||
Niger: +1 hours
|
||||
Nigeria: +1 hours
|
||||
Niue Island: -11 hours
|
||||
Norfolk Island: +11.5 hours
|
||||
Northern Ireland: 0 hours (Local summer +1 hours)
|
||||
Northern Mariana Islands: +10 hours
|
||||
Norway: +1 hours (Local summer +2 hours)
|
||||
Oman: +4 hours
|
||||
Pakistan: +5 hours
|
||||
Palau: +9 hours
|
||||
Panama: -5 hours
|
||||
Papua New Guinea: +10 hours
|
||||
Paraguay: -4 hours (Local summer -3 hours)
|
||||
Peru: -5 hours
|
||||
Philippines: +8 hours
|
||||
Pingelap: +12 hours
|
||||
Poland: +1 hours (Local summer +2 hours)
|
||||
Ponape Island: +11 hours
|
||||
Portugal: +1 hours (Local summer +2 hours)
|
||||
Principe Island: 0 hours
|
||||
Puerto Rico: -4 hours
|
||||
Qatar: +3 hours
|
||||
Reunion: +4 hours
|
||||
Romania: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone eight: +9 hours (Local summer +10 hours)
|
||||
Russian Federation zone eleven: +12 hours (Local summer +13 hours)
|
||||
Russian Federation zone five: +6 hours (Local summer +7 hours)
|
||||
Russian Federation zone four: +5 hours (Local summer +6 hours)
|
||||
Russian Federation zone nine: +10 hours (Local summer +11 hours)
|
||||
Russian Federation zone one: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone seven: +8 hours (Local summer +9 hours)
|
||||
Russian Federation zone six: +7 hours (Local summer +8 hours)
|
||||
Russian Federation zone ten: +11 hours (Local summer +12 hours)
|
||||
Russian Federation zone three: +4 hours (Local summer +5 hours)
|
||||
Russian Federation zone two: +4 hours (Local summer +5 hours)
|
||||
Rwanda: +2 hours
|
||||
Saba: -4 hours
|
||||
Samoa: -11 hours
|
||||
San Marino: +1 hours (Local summer +2 hours)
|
||||
Sao Tome e Principe: 0 hours
|
||||
Saudi Arabia: +3 hours
|
||||
Scotland: 0 hours
|
||||
Senegal: 0 hours
|
||||
Seychelles: +4 hours
|
||||
Sierra Leone: 0 hours
|
||||
Singapore: +8 hours
|
||||
Slovakia: +1 hours (Local summer +2 hours)
|
||||
Slovenia: +1 hours (Local summer +2 hours)
|
||||
Society Island: -10 hours
|
||||
Solomon Islands: +11 hours
|
||||
Somalia: +3 hours
|
||||
South Africa: +2 hours
|
||||
Spain: +1 hours (Local summer +2 hours)
|
||||
Sri Lanka: +5.5 hours
|
||||
St Christopher: -4 hours
|
||||
St Croix: -4 hours
|
||||
St Helena: 0 hours
|
||||
St John: -4 hours
|
||||
St Kitts Nevis: -4 hours
|
||||
St Lucia: -4 hours
|
||||
St Maarten: -4 hours
|
||||
St Pierre & Miquelon: -3 hours (Local summer -2 hours)
|
||||
St Thomas: -4 hours
|
||||
St Vincent: -4 hours
|
||||
Sudan: +2 hours
|
||||
Suriname: -3 hours
|
||||
Swaziland: +2 hours
|
||||
Sweden: +1 hours (Local summer +2 hours)
|
||||
Switzerland: +1 hours (Local summer +2 hours)
|
||||
Syria: +2 hours (Local summer +3 hours)
|
||||
Tahiti: -10 hours
|
||||
Taiwan: +8 hours
|
||||
Tajikistan: +6 hours
|
||||
Tanzania: +3 hours
|
||||
Thailand: +7 hours
|
||||
Togo: 0 hours
|
||||
Tonga: +13 hours
|
||||
Trinidad and Tobago: -4 hours
|
||||
Tuamotu Island: -10 hours
|
||||
Tubuai Island: -10 hours
|
||||
Tunisia: +1 hours
|
||||
Turkey: +2 hours (Local summer +3 hours)
|
||||
Turkmenistan: +5 hours
|
||||
Turks and Caicos Islands: -5 hours (Local summer -4 hours)
|
||||
Tuvalu: +12 hours
|
||||
Uganda: +3 hours
|
||||
Ukraine: +2 hours (Local summer +3 hours)
|
||||
United Arab Emirates: +4 hours
|
||||
United Kingdom: 0 hours (Local summer +1 hours)
|
||||
USA Central: -6 hours (Local summer -5 hours)
|
||||
USA Eastern: -5 hours (Local summer -4 hours)
|
||||
USA Mountain: -7 hours (Local summer -6 hours)
|
||||
USA Arizona: -7 hours
|
||||
USA Indiana East: -5 hours
|
||||
USA Pacific: -8 hours (Local summer -7 hours)
|
||||
USA Alaska: -9 hours (Local summer -8 hours)
|
||||
USA Hawaii Aleutian: - hours (Local summer -10 hours)
|
||||
Uruguay: -3 hours
|
||||
Uzbekistan: +5 hours
|
||||
Vanuatu: +11 hours (Local summer +12 hours)
|
||||
Vatican City: +1 hours (Local summer +2 hours)
|
||||
Venezuela: -4 hours
|
||||
Vietnam: +7 hours
|
||||
Virgin Islands: -4 hours
|
||||
Wake Island: +12 hours
|
||||
Wales: 0 hours (Local summer +1 hours)
|
||||
Wallis and Futuna Islands: +12 hours
|
||||
Windward Islands: -4 hours
|
||||
Yemen: +3 hours
|
||||
Yugoslavia: +1 hours (Local summer +2 hours)
|
||||
Zaire Kasai: +2 hours
|
||||
Zaire Kinshasa Mbandaka: +1 hours
|
||||
Zaire Haut Zaire: +2 hours
|
||||
Zaire Kivu: +2 hours
|
||||
Zaire Shaba: +2 hours
|
||||
Zambia: +2 hours
|
||||
Zimbabwe: +2 hours
|
||||
All timezone information is non-authoritative...
|
327
commands/zoneinfo/usno1997
Normal file
327
commands/zoneinfo/usno1997
Normal file
|
@ -0,0 +1,327 @@
|
|||
# @(#)usno1997 7.7
|
||||
#
|
||||
# From Arthur David Olson (1997-03-07):
|
||||
#
|
||||
# Here's time zone information from the United States Naval Observatory
|
||||
# via http://tycho.usno.navy.mil/tzones.html. See USNO's note at the end.
|
||||
Unofficial Time Zone Information
|
||||
World Time Zones
|
||||
For selected countries, the local standard time offset from UTC is given, with daylight savings time where observed.
|
||||
Time: Fri Mar 7 22:38:58 UTC 1997
|
||||
Afghanistan: +4.5 hours
|
||||
Albania: +1 hours (Local summer +2 hours)
|
||||
Algeria: +1 hours (Local summer +2 hours)
|
||||
American Samoa: -11 hours
|
||||
Andorra: +1 hours (Local summer +2 hours)
|
||||
Angola: +1 hours
|
||||
Anguilla: -4 hours
|
||||
Antarctica: -2 hours (Local summer -3 hours)
|
||||
Antigua: -4 hours
|
||||
Argentina: -3 hours
|
||||
Argentina western prov: -4 hours
|
||||
Armenia: +4 hours (Local summer +5 hours)
|
||||
Aruba: -4 hours
|
||||
Ascension: 0 hours
|
||||
Australia Northern Territory: +9.5 hours
|
||||
Australia Lord Howe Island: +10.5 hours (Local summer +11 hours)
|
||||
Australia New South Wales: +10 hours (Local summer +11 hours)
|
||||
Australia Queensland: +10 hours
|
||||
Australia Victoria: +10 hours (Local summer +11 hours)
|
||||
Australia Australian Captial Territory: +10 hours (Local summer +11 hours)
|
||||
Australia South: +9.5 hours (Local summer +10.5 hours)
|
||||
Australia Tasmania: +10 hours (Local summer +11 hours)
|
||||
Australia Western: +8 hours
|
||||
Austria: +1 hours (Local summer +2 hours)
|
||||
Azerbajian: +3 hours
|
||||
Azores: -1 hours (Local summer 0 hours)
|
||||
Bahamas: -5 hours (Local summer -4 hours)
|
||||
Bahrain: +3 hours
|
||||
Balearic Islands: +1 hours (Local summer +2 hours)
|
||||
Bangladesh: +6 hours
|
||||
Barbados: -4 hours
|
||||
Belarus: +2 hours (Local summer +3 hours)
|
||||
Belgium: +1 hours (Local summer +2 hours)
|
||||
Belize: -6 hours
|
||||
Benin: +1 hours
|
||||
Bermuda: -4 hours (Local summer -3 hours)
|
||||
Bhutan: +6 hours
|
||||
Bolivia: -4 hours
|
||||
Bonaire: -4 hours
|
||||
Bosnia Hercegovina: +1 hours (Local summer +2 hours)
|
||||
Botswana: +2 hours
|
||||
Brazil Acre: -4 hours (Local summer -5 hours)
|
||||
Brazil Atlantic Islands: -1 hours (Local summer -2 hours)
|
||||
Brazil East: -3 hours (Local summer -1 hours)
|
||||
Brazil West: -4 hours (Local summer -3 hours)
|
||||
British Virgin Islands: -4 hours
|
||||
Brunei: +8 hours
|
||||
Bulgaria: +2 hours (Local summer +3 hours)
|
||||
Burkina Faso: 0 hours
|
||||
Burundi: +2 hours
|
||||
Cambodia: +7 hours
|
||||
Cameroon: +1 hours
|
||||
Canada Central: -6 hours (Local summer -5 hours)
|
||||
Canada Eastern: -5 hours (Local summer -4 hours)
|
||||
Canada Mountain: -7 hours (Local summer -6 hours)
|
||||
Canada Yukon & Pacific: -8 hours (Local summer -7 hours)
|
||||
Canada Atlantic: -4 hours (Local summer -3 hours)
|
||||
Canada Newfoundland: -3.5 hours (Local summer -2.5 hours)
|
||||
Canary Islands: 0 hours (Local summer +1 hours)
|
||||
Canton Enderbury Islands: -11 hours
|
||||
Cape Verde: -1 hours
|
||||
Caroline Island: +11 hours
|
||||
Cayman Islands: -5 hours
|
||||
Central African Rep: +1 hours
|
||||
Chad: +1 hours
|
||||
Channel Islands: 0 hours (Local summer +1 hours)
|
||||
Chatham Island: +12.75 hours (Local summer +13.75 hours)
|
||||
Chile: -4 hours (Local summer -3 hours)
|
||||
China People's Rep: +8 hours
|
||||
Christmas Islands: -10 hours
|
||||
Cocos (Keeling) Islands: ( hours (Local summer ) hours)
|
||||
Colombia: -5 hours
|
||||
Congo: +1 hours
|
||||
Cook Islands: -10 hours
|
||||
Costa Rica: -6 hours
|
||||
Cote d'Ivoire: 0 hours
|
||||
Croatia: +1 hours (Local summer +2 hours)
|
||||
Cuba: -5 hours (Local summer -4 hours)
|
||||
Curacao: -4 hours
|
||||
Cyprus: +2 hours (Local summer +3 hours)
|
||||
Czech Republic: +1 hours (Local summer +2 hours)
|
||||
Dahomey: +1 hours
|
||||
Denmark: +1 hours (Local summer +2 hours)
|
||||
Djibouti: +3 hours
|
||||
Dominica: -4 hours
|
||||
Dominican Republic: -4 hours
|
||||
Easter Island: -6 hours (Local summer -5 hours)
|
||||
Ecuador: -5 hours
|
||||
Egypt: +2 hours (Local summer +3 hours)
|
||||
El Salvador: -6 hours
|
||||
England: 0 hours (Local summer +1 hours)
|
||||
Equitorial Guinea: +1 hours
|
||||
Eritrea: +3 hours
|
||||
Estonia: +2 hours (Local summer +3 hours)
|
||||
Ethiopia: +3 hours
|
||||
Falkland Islands: -4 hours (Local summer -3 hours)
|
||||
Faroe Island: 0 hours (Local summer +1 hours)
|
||||
Fiji: +12 hours
|
||||
Finland: +2 hours (Local summer +3 hours)
|
||||
France: +1 hours (Local summer +2 hours)
|
||||
French Guiana: -3 hours
|
||||
French Polynesia: -10 hours
|
||||
Gabon: +1 hours
|
||||
Galapagos Islands: -5 hours
|
||||
Gambia: 0 hours
|
||||
Gambier Island: -9 hours
|
||||
Georgia: +4 hours
|
||||
Germany: +1 hours (Local summer +2 hours)
|
||||
Ghana: 0 hours
|
||||
Gibraltar: +1 hours (Local summer +2 hours)
|
||||
Greece: +2 hours (Local summer +3 hours)
|
||||
Greenland: -3 hours (Local summer -2 hours)
|
||||
Greenland Thule: -4 hours (Local summer -3 hours)
|
||||
Greenland Scoresbysun: -1 hours (Local summer 0 hours)
|
||||
Grenada: -4 hours
|
||||
Grenadines: -4 hours
|
||||
Guadeloupe: -4 hours
|
||||
Guam: +10 hours
|
||||
Guatemala: -6 hours
|
||||
Guinea: 0 hours
|
||||
Guinea Bissau: - hours (Local summer 0 hours)
|
||||
Guyana: -3 hours
|
||||
Haiti: -5 hours (Local summer -4 hours)
|
||||
Honduras: -6 hours
|
||||
Hong kong: +8 hours
|
||||
Hungary: +1 hours (Local summer +2 hours)
|
||||
Iceland: 0 hours
|
||||
India: +5.5 hours
|
||||
Indonesia Central: +8 hours
|
||||
Indonesia East: +9 hours
|
||||
Indonesia West: +7 hours
|
||||
Iran: +3.5 hours
|
||||
Iraq: +3 hours (Local summer +4 hours)
|
||||
Ireland Republic of: 0 hours (Local summer +1 hours)
|
||||
Israel: +2 hours (Local summer +3 hours)
|
||||
Italy: +1 hours (Local summer +2 hours)
|
||||
Jamaica: -5 hours
|
||||
Japan: +9 hours
|
||||
Johnston Island: -10 hours
|
||||
Jordan: +2 hours (Local summer +3 hours)
|
||||
Kazakhstan: +6 hours (Local summer +7 hours)
|
||||
Kenya: +3 hours
|
||||
Kiribati: +12 hours
|
||||
Korea Dem Republic of: +9 hours
|
||||
Korea Republic of: +9 hours
|
||||
Kusaie: +12 hours
|
||||
Kuwait: +3 hours
|
||||
Kwajalein: -12 hours
|
||||
Kyrgyzstan: +5 hours (Local summer +6 hours)
|
||||
Laos: +7 hours
|
||||
Latvia: +2 hours (Local summer +3 hours)
|
||||
Lebanon: +2 hours (Local summer +3 hours)
|
||||
Leeward Islands: -4 hours
|
||||
Lesotho: +2 hours
|
||||
Liberia: 0 hours
|
||||
Libya: +2 hours
|
||||
Lithuania: +2 hours (Local summer +3 hours)
|
||||
Luxembourg: +1 hours (Local summer +2 hours)
|
||||
Macedonia: +1 hours (Local summer +2 hours)
|
||||
Madagascar: +3 hours
|
||||
Madeira: 0 hours (Local summer +1 hours)
|
||||
Malawi: +2 hours
|
||||
Malaysia: +8 hours
|
||||
Maldives: +5 hours
|
||||
Mali: 0 hours
|
||||
Mallorca Islands: +1 hours (Local summer +2 hours)
|
||||
Malta: +1 hours (Local summer +2 hours)
|
||||
Mariana Island: +10 hours
|
||||
Marquesas Islands: -9.5 hours
|
||||
Marshall Islands: +12 hours
|
||||
Martinique: -4 hours
|
||||
Mauritania: 0 hours
|
||||
Mauritius: +4 hours
|
||||
Mayotte: +3 hours
|
||||
Melilla: +1 hours (Local summer +2 hours)
|
||||
Mexico: -6 hours
|
||||
Mexico Baja Calif Norte: -8 hours (Local summer -7 hours)
|
||||
Mexico Nayarit: -7 hours
|
||||
Mexico Sinaloa: -7 hours
|
||||
Mexico Sonora: -7 hours
|
||||
Midway Island: -11 hours
|
||||
Moldova: +2 hours (Local summer +3 hours)
|
||||
Moldovian Rep Pridnestrovye: +2 hours (Local summer +3 hours)
|
||||
Monaco: +1 hours (Local summer +2 hours)
|
||||
Mongolia: +8 hours
|
||||
Morocco: 0 hours
|
||||
Mozambique: +2 hours
|
||||
Myanmar: +6.5 hours
|
||||
Namibia: +1 hours (Local summer +2 hours)
|
||||
Nauru Republic of: +12 hours
|
||||
Nepal: +5.75 hours
|
||||
Netherlands: +1 hours (Local summer +2 hours)
|
||||
Netherlands Antilles: -4 hours
|
||||
Nevis Montserrat: -4 hours
|
||||
New Caledonia: +11 hours
|
||||
New Hebrides: +11 hours
|
||||
New Zealand: +12 hours (Local summer +13 hours)
|
||||
Nicaragua: -6 hours (Local summer -5 hours)
|
||||
Niger: +1 hours
|
||||
Nigeria: +1 hours
|
||||
Niue Island: -11 hours
|
||||
Norfolk Island: +11.5 hours
|
||||
Northern Ireland: 0 hours (Local summer +1 hours)
|
||||
Northern Mariana Islands: +10 hours
|
||||
Norway: +1 hours (Local summer +2 hours)
|
||||
Oman: +4 hours
|
||||
Pakistan: +5 hours
|
||||
Palau: +9 hours
|
||||
Panama: -5 hours
|
||||
Papua New Guinea: +10 hours
|
||||
Paraguay: -4 hours (Local summer -3 hours)
|
||||
Peru: -5 hours
|
||||
Philippines: +8 hours
|
||||
Pingelap: +12 hours
|
||||
Poland: +1 hours (Local summer +2 hours)
|
||||
Ponape Island: +11 hours
|
||||
Portugal: +1 hours (Local summer +2 hours)
|
||||
Principe Island: 0 hours
|
||||
Puerto Rico: -4 hours
|
||||
Qatar: +3 hours
|
||||
Reunion: +4 hours
|
||||
Romania: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone eight: +9 hours (Local summer +10 hours)
|
||||
Russian Federation zone eleven: +12 hours (Local summer +13 hours)
|
||||
Russian Federation zone five: +6 hours (Local summer +7 hours)
|
||||
Russian Federation zone four: +5 hours (Local summer +6 hours)
|
||||
Russian Federation zone nine: +10 hours (Local summer +11 hours)
|
||||
Russian Federation zone one: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone seven: +8 hours (Local summer +9 hours)
|
||||
Russian Federation zone six: +7 hours (Local summer +8 hours)
|
||||
Russian Federation zone ten: +11 hours (Local summer +12 hours)
|
||||
Russian Federation zone three: +4 hours (Local summer +5 hours)
|
||||
Russian Federation zone two: +4 hours (Local summer +5 hours)
|
||||
Rwanda: +2 hours
|
||||
Saba: -4 hours
|
||||
Samoa: -11 hours
|
||||
San Marino: +1 hours (Local summer +2 hours)
|
||||
Sao Tome e Principe: 0 hours
|
||||
Saudi Arabia: +3 hours
|
||||
Scotland: 0 hours (Local summer +1 hours)
|
||||
Senegal: 0 hours
|
||||
Seychelles: +4 hours
|
||||
Sierra Leone: 0 hours
|
||||
Singapore: +8 hours
|
||||
Slovakia: +1 hours (Local summer +2 hours)
|
||||
Slovenia: +1 hours (Local summer +2 hours)
|
||||
Society Island: -10 hours
|
||||
Solomon Islands: +11 hours
|
||||
Somalia: +3 hours
|
||||
South Africa: +2 hours
|
||||
Spain: +1 hours (Local summer +2 hours)
|
||||
Sri Lanka: +5.5 hours
|
||||
St Christopher: -4 hours
|
||||
St Croix: -4 hours
|
||||
St Helena: 0 hours
|
||||
St John: -4 hours
|
||||
St Kitts Nevis: -4 hours
|
||||
St Lucia: -4 hours
|
||||
St Maarten: -4 hours
|
||||
St Pierre & Miquelon: -3 hours (Local summer -2 hours)
|
||||
St Thomas: -4 hours
|
||||
St Vincent: -4 hours
|
||||
Sudan: +2 hours
|
||||
Suriname: -3 hours
|
||||
Swaziland: +2 hours
|
||||
Sweden: +1 hours (Local summer +2 hours)
|
||||
Switzerland: +1 hours (Local summer +2 hours)
|
||||
Syria: +2 hours (Local summer +3 hours)
|
||||
Tahiti: -10 hours
|
||||
Taiwan: +8 hours
|
||||
Tajikistan: +6 hours
|
||||
Tanzania: +3 hours
|
||||
Thailand: +7 hours
|
||||
Togo: 0 hours
|
||||
Tonga: +13 hours
|
||||
Trinidad and Tobago: -4 hours
|
||||
Tuamotu Island: -10 hours
|
||||
Tubuai Island: -10 hours
|
||||
Tunisia: +1 hours
|
||||
Turkey: +2 hours (Local summer +3 hours)
|
||||
Turkmenistan: +5 hours
|
||||
Turks and Caicos Islands: -5 hours (Local summer -4 hours)
|
||||
Tuvalu: +12 hours
|
||||
Uganda: +3 hours
|
||||
Ukraine: +2 hours (Local summer +3 hours)
|
||||
United Arab Emirates: +4 hours
|
||||
United Kingdom: 0 hours (Local summer +1 hours)
|
||||
USA Central: -6 hours (Local summer -5 hours)
|
||||
USA Eastern: -5 hours (Local summer -4 hours)
|
||||
USA Mountain: -7 hours (Local summer -6 hours)
|
||||
USA Arizona: -7 hours
|
||||
USA Indiana East: -5 hours
|
||||
USA Pacific: -8 hours (Local summer -7 hours)
|
||||
USA Alaska: -9 hours (Local summer -8 hours)
|
||||
USA Aleutian: -10 hours
|
||||
USA Hawaii: -10 hours
|
||||
Uruguay: -3 hours
|
||||
Uzbekistan: +5 hours
|
||||
Vanuatu: +11 hours (Local summer +12 hours)
|
||||
Vatican City: +1 hours (Local summer +2 hours)
|
||||
Venezuela: -4 hours
|
||||
Vietnam: +7 hours
|
||||
Virgin Islands: -4 hours
|
||||
Wake Island: +12 hours
|
||||
Wales: 0 hours (Local summer +1 hours)
|
||||
Wallis and Futuna Islands: +12 hours
|
||||
Windward Islands: -4 hours
|
||||
Yemen: +3 hours
|
||||
Yugoslavia: +1 hours (Local summer +2 hours)
|
||||
Zaire Kasai: +2 hours
|
||||
Zaire Kinshasa Mbandaka: +1 hours
|
||||
Zaire Haut Zaire: +2 hours
|
||||
Zaire Kivu: +2 hours
|
||||
Zaire Shaba: +2 hours
|
||||
Zambia: +2 hours
|
||||
Zimbabwe: +2 hours
|
||||
All timezone information is non-authoritative...
|
327
commands/zoneinfo/usno1998
Normal file
327
commands/zoneinfo/usno1998
Normal file
|
@ -0,0 +1,327 @@
|
|||
# @(#)usno1998 7.4
|
||||
#
|
||||
# From Arthur David Olson (1998-05-26):
|
||||
#
|
||||
# Here's time zone information from the United States Naval Observatory
|
||||
# via http://tycho.usno.navy.mil/tzones.html. See USNO's note at the end.
|
||||
Unofficial Time Zone Information
|
||||
World Time Zones
|
||||
For selected countries, the local standard time offset from UTC is given, with daylight savings time where observed.
|
||||
Time: Mon May 25 21:14:24 UTC 1998
|
||||
Afghanistan: +4.5 hours
|
||||
Albania: +1 hours (Local summer +2 hours)
|
||||
Algeria: +1 hours (Local summer +2 hours)
|
||||
American Samoa: -11 hours
|
||||
Andorra: +1 hours (Local summer +2 hours)
|
||||
Angola: +1 hours
|
||||
Anguilla: -4 hours
|
||||
Antarctica: -2 hours (Local summer -3 hours)
|
||||
Antigua: -4 hours
|
||||
Argentina: -3 hours
|
||||
Argentina western prov: -4 hours
|
||||
Armenia: +4 hours (Local summer +5 hours)
|
||||
Aruba: -4 hours
|
||||
Ascension: 0 hours
|
||||
Australia Northern Territory: +9.5 hours
|
||||
Australia Lord Howe Island: +10.5 hours (Local summer +11 hours)
|
||||
Australia New South Wales: +10 hours (Local summer +11 hours)
|
||||
Australia Queensland: +10 hours
|
||||
Australia Victoria: +10 hours (Local summer +11 hours)
|
||||
Australia Australian Captial Territory: +10 hours (Local summer +11 hours)
|
||||
Australia South: +9.5 hours (Local summer +10.5 hours)
|
||||
Australia Tasmania: +10 hours (Local summer +11 hours)
|
||||
Australia Western: +8 hours
|
||||
Austria: +1 hours (Local summer +2 hours)
|
||||
Azerbajian: +3 hours
|
||||
Azores: -1 hours (Local summer 0 hours)
|
||||
Bahamas: -5 hours (Local summer -4 hours)
|
||||
Bahrain: +3 hours
|
||||
Balearic Islands: +1 hours (Local summer +2 hours)
|
||||
Bangladesh: +6 hours
|
||||
Barbados: -4 hours
|
||||
Belarus: +2 hours (Local summer +3 hours)
|
||||
Belgium: +1 hours (Local summer +2 hours)
|
||||
Belize: -6 hours
|
||||
Benin: +1 hours
|
||||
Bermuda: -4 hours (Local summer -3 hours)
|
||||
Bhutan: +6 hours
|
||||
Bolivia: -4 hours
|
||||
Bonaire: -4 hours
|
||||
Bosnia Hercegovina: +1 hours (Local summer +2 hours)
|
||||
Botswana: +2 hours
|
||||
Brazil Acre: -4 hours (Local summer -5 hours)
|
||||
Brazil Atlantic Islands: -1 hours (Local summer -2 hours)
|
||||
Brazil East: -3 hours (Local summer -1 hours)
|
||||
Brazil West: -4 hours (Local summer -3 hours)
|
||||
British Virgin Islands: -4 hours
|
||||
Brunei: +8 hours
|
||||
Bulgaria: +2 hours (Local summer +3 hours)
|
||||
Burkina Faso: 0 hours
|
||||
Burundi: +2 hours
|
||||
Cambodia: +7 hours
|
||||
Cameroon: +1 hours
|
||||
Canada Central: -6 hours (Local summer -5 hours)
|
||||
Canada Eastern: -5 hours (Local summer -4 hours)
|
||||
Canada Mountain: -7 hours (Local summer -6 hours)
|
||||
Canada Yukon & Pacific: -8 hours (Local summer -7 hours)
|
||||
Canada Atlantic: -4 hours (Local summer -3 hours)
|
||||
Canada Newfoundland: -3.5 hours (Local summer -2.5 hours)
|
||||
Canary Islands: 0 hours (Local summer +1 hours)
|
||||
Canton Enderbury Islands: -11 hours
|
||||
Cape Verde: -1 hours
|
||||
Caroline Island: +11 hours
|
||||
Cayman Islands: -5 hours
|
||||
Central African Rep: +1 hours
|
||||
Chad: +1 hours
|
||||
Channel Islands: 0 hours (Local summer +1 hours)
|
||||
Chatham Island: +12.75 hours (Local summer +13.75 hours)
|
||||
Chile: -4 hours (Local summer -3 hours)
|
||||
China People's Rep: +8 hours
|
||||
Christmas Islands: -10 hours
|
||||
Cocos (Keeling) Islands: ( hours (Local summer ) hours)
|
||||
Colombia: -5 hours
|
||||
Congo: +1 hours
|
||||
Cook Islands: -10 hours
|
||||
Costa Rica: -6 hours
|
||||
Cote d'Ivoire: 0 hours
|
||||
Croatia: +1 hours (Local summer +2 hours)
|
||||
Cuba: -5 hours (Local summer -4 hours)
|
||||
Curacao: -4 hours
|
||||
Cyprus: +2 hours (Local summer +3 hours)
|
||||
Czech Republic: +1 hours (Local summer +2 hours)
|
||||
Dahomey: +1 hours
|
||||
Denmark: +1 hours (Local summer +2 hours)
|
||||
Djibouti: +3 hours
|
||||
Dominica: -4 hours
|
||||
Dominican Republic: -4 hours
|
||||
Easter Island: -6 hours (Local summer -5 hours)
|
||||
Ecuador: -5 hours
|
||||
Egypt: +2 hours (Local summer +3 hours)
|
||||
El Salvador: -6 hours
|
||||
England: 0 hours (Local summer +1 hours)
|
||||
Equitorial Guinea: +1 hours
|
||||
Eritrea: +3 hours
|
||||
Estonia: +2 hours (Local summer +3 hours)
|
||||
Ethiopia: +3 hours
|
||||
Falkland Islands: -4 hours (Local summer -3 hours)
|
||||
Faroe Island: 0 hours (Local summer +1 hours)
|
||||
Fiji: +12 hours
|
||||
Finland: +2 hours (Local summer +3 hours)
|
||||
France: +1 hours (Local summer +2 hours)
|
||||
French Guiana: -3 hours
|
||||
French Polynesia: -10 hours
|
||||
Gabon: +1 hours
|
||||
Galapagos Islands: -5 hours
|
||||
Gambia: 0 hours
|
||||
Gambier Island: -9 hours
|
||||
Georgia: +4 hours
|
||||
Germany: +1 hours (Local summer +2 hours)
|
||||
Ghana: 0 hours
|
||||
Gibraltar: +1 hours (Local summer +2 hours)
|
||||
Greece: +2 hours (Local summer +3 hours)
|
||||
Greenland: -3 hours (Local summer -2 hours)
|
||||
Greenland Thule: -4 hours (Local summer -3 hours)
|
||||
Greenland Scoresbysun: -1 hours (Local summer 0 hours)
|
||||
Grenada: -4 hours
|
||||
Grenadines: -4 hours
|
||||
Guadeloupe: -4 hours
|
||||
Guam: +10 hours
|
||||
Guatemala: -6 hours
|
||||
Guinea: 0 hours
|
||||
Guinea Bissau: - hours (Local summer 0 hours)
|
||||
Guyana: -3 hours
|
||||
Haiti: -5 hours (Local summer -4 hours)
|
||||
Honduras: -6 hours
|
||||
Hong kong: +8 hours
|
||||
Hungary: +1 hours (Local summer +2 hours)
|
||||
Iceland: 0 hours
|
||||
India: +5.5 hours
|
||||
Indonesia Central: +8 hours
|
||||
Indonesia East: +9 hours
|
||||
Indonesia West: +7 hours
|
||||
Iran: +3.5 hours
|
||||
Iraq: +3 hours (Local summer +4 hours)
|
||||
Ireland Republic of: 0 hours (Local summer +1 hours)
|
||||
Israel: +2 hours (Local summer +3 hours)
|
||||
Italy: +1 hours (Local summer +2 hours)
|
||||
Jamaica: -5 hours
|
||||
Japan: +9 hours
|
||||
Johnston Island: -10 hours
|
||||
Jordan: +2 hours (Local summer +3 hours)
|
||||
Kazakhstan: +6 hours (Local summer +7 hours)
|
||||
Kenya: +3 hours
|
||||
Kiribati: +12 hours
|
||||
Korea Dem Republic of: +9 hours
|
||||
Korea Republic of: +9 hours
|
||||
Kusaie: +12 hours
|
||||
Kuwait: +3 hours
|
||||
Kwajalein: -12 hours
|
||||
Kyrgyzstan: +5 hours (Local summer +6 hours)
|
||||
Laos: +7 hours
|
||||
Latvia: +2 hours (Local summer +3 hours)
|
||||
Lebanon: +2 hours (Local summer +3 hours)
|
||||
Leeward Islands: -4 hours
|
||||
Lesotho: +2 hours
|
||||
Liberia: 0 hours
|
||||
Libya: +2 hours
|
||||
Lithuania: +2 hours (Local summer +3 hours)
|
||||
Luxembourg: +1 hours (Local summer +2 hours)
|
||||
Macedonia: +1 hours (Local summer +2 hours)
|
||||
Madagascar: +3 hours
|
||||
Madeira: 0 hours (Local summer +1 hours)
|
||||
Malawi: +2 hours
|
||||
Malaysia: +8 hours
|
||||
Maldives: +5 hours
|
||||
Mali: 0 hours
|
||||
Mallorca Islands: +1 hours (Local summer +2 hours)
|
||||
Malta: +1 hours (Local summer +2 hours)
|
||||
Mariana Island: +10 hours
|
||||
Marquesas Islands: -9.5 hours
|
||||
Marshall Islands: +12 hours
|
||||
Martinique: -4 hours
|
||||
Mauritania: 0 hours
|
||||
Mauritius: +4 hours
|
||||
Mayotte: +3 hours
|
||||
Melilla: +1 hours (Local summer +2 hours)
|
||||
Mexico: -6 hours
|
||||
Mexico Baja Calif Norte: -8 hours (Local summer -7 hours)
|
||||
Mexico Nayarit: -7 hours
|
||||
Mexico Sinaloa: -7 hours
|
||||
Mexico Sonora: -7 hours
|
||||
Midway Island: -11 hours
|
||||
Moldova: +2 hours (Local summer +3 hours)
|
||||
Moldovian Rep Pridnestrovye: +2 hours (Local summer +3 hours)
|
||||
Monaco: +1 hours (Local summer +2 hours)
|
||||
Mongolia: +8 hours
|
||||
Morocco: 0 hours
|
||||
Mozambique: +2 hours
|
||||
Myanmar: +6.5 hours
|
||||
Namibia: +1 hours (Local summer +2 hours)
|
||||
Nauru Republic of: +12 hours
|
||||
Nepal: +5.75 hours
|
||||
Netherlands: +1 hours (Local summer +2 hours)
|
||||
Netherlands Antilles: -4 hours
|
||||
Nevis Montserrat: -4 hours
|
||||
New Caledonia: +11 hours
|
||||
New Hebrides: +11 hours
|
||||
New Zealand: +12 hours (Local summer +13 hours)
|
||||
Nicaragua: -6 hours (Local summer -5 hours)
|
||||
Niger: +1 hours
|
||||
Nigeria: +1 hours
|
||||
Niue Island: -11 hours
|
||||
Norfolk Island: +11.5 hours
|
||||
Northern Ireland: 0 hours (Local summer +1 hours)
|
||||
Northern Mariana Islands: +10 hours
|
||||
Norway: +1 hours (Local summer +2 hours)
|
||||
Oman: +4 hours
|
||||
Pakistan: +5 hours
|
||||
Palau: +9 hours
|
||||
Panama: -5 hours
|
||||
Papua New Guinea: +10 hours
|
||||
Paraguay: -4 hours (Local summer -3 hours)
|
||||
Peru: -5 hours
|
||||
Philippines: +8 hours
|
||||
Pingelap: +12 hours
|
||||
Poland: +1 hours (Local summer +2 hours)
|
||||
Ponape Island: +11 hours
|
||||
Portugal: +1 hours (Local summer +2 hours)
|
||||
Principe Island: 0 hours
|
||||
Puerto Rico: -4 hours
|
||||
Qatar: +3 hours
|
||||
Reunion: +4 hours
|
||||
Romania: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone eight: +9 hours (Local summer +10 hours)
|
||||
Russian Federation zone eleven: +12 hours (Local summer +13 hours)
|
||||
Russian Federation zone five: +6 hours (Local summer +7 hours)
|
||||
Russian Federation zone four: +5 hours (Local summer +6 hours)
|
||||
Russian Federation zone nine: +10 hours (Local summer +11 hours)
|
||||
Russian Federation zone one: +2 hours (Local summer +3 hours)
|
||||
Russian Federation zone seven: +8 hours (Local summer +9 hours)
|
||||
Russian Federation zone six: +7 hours (Local summer +8 hours)
|
||||
Russian Federation zone ten: +11 hours (Local summer +12 hours)
|
||||
Russian Federation zone three: +4 hours (Local summer +5 hours)
|
||||
Russian Federation zone two: +4 hours (Local summer +5 hours)
|
||||
Rwanda: +2 hours
|
||||
Saba: -4 hours
|
||||
Samoa: -11 hours
|
||||
San Marino: +1 hours (Local summer +2 hours)
|
||||
Sao Tome e Principe: 0 hours
|
||||
Saudi Arabia: +3 hours
|
||||
Scotland: 0 hours (Local summer +1 hours)
|
||||
Senegal: 0 hours
|
||||
Seychelles: +4 hours
|
||||
Sierra Leone: 0 hours
|
||||
Singapore: +8 hours
|
||||
Slovakia: +1 hours (Local summer +2 hours)
|
||||
Slovenia: +1 hours (Local summer +2 hours)
|
||||
Society Island: -10 hours
|
||||
Solomon Islands: +11 hours
|
||||
Somalia: +3 hours
|
||||
South Africa: +2 hours
|
||||
Spain: +1 hours (Local summer +2 hours)
|
||||
Sri Lanka: +5.5 hours
|
||||
St Christopher: -4 hours
|
||||
St Croix: -4 hours
|
||||
St Helena: 0 hours
|
||||
St John: -4 hours
|
||||
St Kitts Nevis: -4 hours
|
||||
St Lucia: -4 hours
|
||||
St Maarten: -4 hours
|
||||
St Pierre & Miquelon: -3 hours (Local summer -2 hours)
|
||||
St Thomas: -4 hours
|
||||
St Vincent: -4 hours
|
||||
Sudan: +2 hours
|
||||
Suriname: -3 hours
|
||||
Swaziland: +2 hours
|
||||
Sweden: +1 hours (Local summer +2 hours)
|
||||
Switzerland: +1 hours (Local summer +2 hours)
|
||||
Syria: +2 hours (Local summer +3 hours)
|
||||
Tahiti: -10 hours
|
||||
Taiwan: +8 hours
|
||||
Tajikistan: +6 hours
|
||||
Tanzania: +3 hours
|
||||
Thailand: +7 hours
|
||||
Togo: 0 hours
|
||||
Tonga: +13 hours
|
||||
Trinidad and Tobago: -4 hours
|
||||
Tuamotu Island: -10 hours
|
||||
Tubuai Island: -10 hours
|
||||
Tunisia: +1 hours
|
||||
Turkey: +2 hours (Local summer +3 hours)
|
||||
Turkmenistan: +5 hours
|
||||
Turks and Caicos Islands: -5 hours (Local summer -4 hours)
|
||||
Tuvalu: +12 hours
|
||||
Uganda: +3 hours
|
||||
Ukraine: +2 hours (Local summer +3 hours)
|
||||
United Arab Emirates: +4 hours
|
||||
United Kingdom: 0 hours (Local summer +1 hours)
|
||||
USA Central: -6 hours (Local summer -5 hours)
|
||||
USA Eastern: -5 hours (Local summer -4 hours)
|
||||
USA Mountain: -7 hours (Local summer -6 hours)
|
||||
USA Arizona: -7 hours
|
||||
USA Indiana East: -5 hours
|
||||
USA Pacific: -8 hours (Local summer -7 hours)
|
||||
USA Alaska: -9 hours (Local summer -8 hours)
|
||||
USA Aleutian: -10 hours
|
||||
USA Hawaii: -10 hours
|
||||
Uruguay: -3 hours
|
||||
Uzbekistan: +5 hours
|
||||
Vanuatu: +11 hours (Local summer +12 hours)
|
||||
Vatican City: +1 hours (Local summer +2 hours)
|
||||
Venezuela: -4 hours
|
||||
Vietnam: +7 hours
|
||||
Virgin Islands: -4 hours
|
||||
Wake Island: +12 hours
|
||||
Wales: 0 hours (Local summer +1 hours)
|
||||
Wallis and Futuna Islands: +12 hours
|
||||
Windward Islands: -4 hours
|
||||
Yemen: +3 hours
|
||||
Yugoslavia: +1 hours (Local summer +2 hours)
|
||||
Zaire Kasai: +2 hours
|
||||
Zaire Kinshasa Mbandaka: +1 hours
|
||||
Zaire Haut Zaire: +2 hours
|
||||
Zaire Kivu: +2 hours
|
||||
Zaire Shaba: +2 hours
|
||||
Zambia: +2 hours
|
||||
Zimbabwe: +2 hours
|
||||
All timezone information is non-authoritative...
|
29
commands/zoneinfo/workman.sh
Normal file
29
commands/zoneinfo/workman.sh
Normal file
|
@ -0,0 +1,29 @@
|
|||
#! /bin/sh
|
||||
|
||||
# @(#)workman.sh 1.8
|
||||
|
||||
# Tell groff not to emit SGR escape sequences (ANSI color escapes).
|
||||
GROFF_NO_SGR=1
|
||||
export GROFF_NO_SGR
|
||||
|
||||
echo ".am TH
|
||||
.hy 0
|
||||
.na
|
||||
..
|
||||
.rm }H
|
||||
.rm }F" | nroff -man - ${1+"$@"} | perl -ne '
|
||||
chomp;
|
||||
s/.\010//g;
|
||||
s/\s*$//;
|
||||
if (/^$/) {
|
||||
$sawblank = 1;
|
||||
next;
|
||||
} else {
|
||||
if ($sawblank && $didprint) {
|
||||
print "\n";
|
||||
$sawblank = 0;
|
||||
}
|
||||
print "$_\n";
|
||||
$didprint = 1;
|
||||
}
|
||||
'
|
40
commands/zoneinfo/yearistype.sh
Normal file
40
commands/zoneinfo/yearistype.sh
Normal file
|
@ -0,0 +1,40 @@
|
|||
#! /bin/sh
|
||||
|
||||
: 'This file is in the public domain, so clarified as of'
|
||||
: '2006-07-17 by Arthur David Olson.'
|
||||
|
||||
: '@(#)yearistype.sh 8.2'
|
||||
|
||||
case $#-$1 in
|
||||
2-|2-0*|2-*[!0-9]*)
|
||||
echo "$0: wild year - $1" >&2
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
case $#-$2 in
|
||||
2-even)
|
||||
case $1 in
|
||||
*[24680]) exit 0 ;;
|
||||
*) exit 1 ;;
|
||||
esac ;;
|
||||
2-nonpres|2-nonuspres)
|
||||
case $1 in
|
||||
*[02468][048]|*[13579][26]) exit 1 ;;
|
||||
*) exit 0 ;;
|
||||
esac ;;
|
||||
2-odd)
|
||||
case $1 in
|
||||
*[13579]) exit 0 ;;
|
||||
*) exit 1 ;;
|
||||
esac ;;
|
||||
2-uspres)
|
||||
case $1 in
|
||||
*[02468][048]|*[13579][26]) exit 0 ;;
|
||||
*) exit 1 ;;
|
||||
esac ;;
|
||||
2-*)
|
||||
echo "$0: wild type - $2" >&2 ;;
|
||||
esac
|
||||
|
||||
echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
|
||||
exit 1
|
57
commands/zoneinfo/zdump.8
Normal file
57
commands/zoneinfo/zdump.8
Normal file
|
@ -0,0 +1,57 @@
|
|||
.TH ZDUMP 8
|
||||
.SH NAME
|
||||
zdump \- time zone dumper
|
||||
.SH SYNOPSIS
|
||||
.B zdump
|
||||
[
|
||||
.B \-\-version
|
||||
]
|
||||
[
|
||||
.B \-v
|
||||
] [
|
||||
.B \-c
|
||||
[loyear,]hiyear ] [ zonename ... ]
|
||||
.SH DESCRIPTION
|
||||
.I Zdump
|
||||
prints the current time in each
|
||||
.I zonename
|
||||
named on the command line.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BI "\-\-version"
|
||||
Output version information and exit.
|
||||
.TP
|
||||
.B \-v
|
||||
For each
|
||||
.I zonename
|
||||
on the command line,
|
||||
print the time at the lowest possible time value,
|
||||
the time one day after the lowest possible time value,
|
||||
the times both one second before and exactly at
|
||||
each detected time discontinuity,
|
||||
the time at one day less than the highest possible time value,
|
||||
and the time at the highest possible time value,
|
||||
Each line ends with
|
||||
.B isdst=1
|
||||
if the given time is Daylight Saving Time or
|
||||
.B isdst=0
|
||||
otherwise.
|
||||
.TP
|
||||
.BI "\-c " [loyear,]hiyear
|
||||
Cut off verbose output near the start of the given year(s).
|
||||
By default,
|
||||
the program cuts off verbose output near the starts of the years -500 and 2500.
|
||||
.SH LIMITATIONS
|
||||
The
|
||||
.B \-v
|
||||
option may not be used on systems with floating-point time_t values
|
||||
that are neither float nor double.
|
||||
.PP
|
||||
Time discontinuities are found by sampling the results returned by localtime
|
||||
at twelve-hour intervals.
|
||||
This works in all real-world cases;
|
||||
one can construct artificial time zones for which this fails.
|
||||
.SH "SEE ALSO"
|
||||
newctime(3), tzfile(5), zic(8)
|
||||
.\" @(#)zdump.8 7.7
|
43
commands/zoneinfo/zdump.8.txt
Normal file
43
commands/zoneinfo/zdump.8.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
NAME
|
||||
|
||||
zdump - time zone dumper
|
||||
|
||||
SYNOPSIS
|
||||
zdump [ --version ] [ -v ] [ -c [loyear,]hiyear ] [ zonename
|
||||
... ]
|
||||
|
||||
DESCRIPTION
|
||||
Zdump prints the current time in each zonename named on the
|
||||
command line.
|
||||
|
||||
These options are available:
|
||||
|
||||
--version
|
||||
Output version information and exit.
|
||||
|
||||
-v For each zonename on the command line, print the time
|
||||
at the lowest possible time value, the time one day
|
||||
after the lowest possible time value, the times both
|
||||
one second before and exactly at each detected time
|
||||
discontinuity, the time at one day less than the
|
||||
highest possible time value, and the time at the
|
||||
highest possible time value, Each line ends with
|
||||
isdst=1 if the given time is Daylight Saving Time or
|
||||
isdst=0 otherwise.
|
||||
|
||||
-c [loyear,]hiyear
|
||||
Cut off verbose output near the start of the given
|
||||
year(s). By default, the program cuts off verbose
|
||||
output near the starts of the years -500 and 2500.
|
||||
|
||||
LIMITATIONS
|
||||
The -v option may not be used on systems with floating-point
|
||||
time_t values that are neither float nor double.
|
||||
|
||||
Time discontinuities are found by sampling the results
|
||||
returned by localtime at twelve-hour intervals. This works
|
||||
in all real-world cases; one can construct artificial time
|
||||
zones for which this fails.
|
||||
|
||||
SEE ALSO
|
||||
newctime(3), tzfile(5), zic(8)
|
686
commands/zoneinfo/zdump.c
Normal file
686
commands/zoneinfo/zdump.c
Normal file
|
@ -0,0 +1,686 @@
|
|||
static char elsieid[] = "@(#)zdump.c 7.77";
|
||||
|
||||
/*
|
||||
** This code has been made independent of the rest of the time
|
||||
** conversion package to increase confidence in the verification it provides.
|
||||
** You can use this code to help in verifying other implementations.
|
||||
*/
|
||||
|
||||
#include "stdio.h" /* for stdout, stderr, perror */
|
||||
#include "string.h" /* for strcpy */
|
||||
#include "sys/types.h" /* for time_t */
|
||||
#include "time.h" /* for struct tm */
|
||||
#include "stdlib.h" /* for exit, malloc, atoi */
|
||||
#include "float.h" /* for FLT_MAX and DBL_MAX */
|
||||
#include "ctype.h" /* for isalpha et al. */
|
||||
#ifndef isascii
|
||||
#define isascii(x) 1
|
||||
#endif /* !defined isascii */
|
||||
|
||||
#ifndef ZDUMP_LO_YEAR
|
||||
#define ZDUMP_LO_YEAR (-500)
|
||||
#endif /* !defined ZDUMP_LO_YEAR */
|
||||
|
||||
#ifndef ZDUMP_HI_YEAR
|
||||
#define ZDUMP_HI_YEAR 2500
|
||||
#endif /* !defined ZDUMP_HI_YEAR */
|
||||
|
||||
#ifndef MAX_STRING_LENGTH
|
||||
#define MAX_STRING_LENGTH 1024
|
||||
#endif /* !defined MAX_STRING_LENGTH */
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif /* !defined TRUE */
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif /* !defined FALSE */
|
||||
|
||||
#ifndef EXIT_SUCCESS
|
||||
#define EXIT_SUCCESS 0
|
||||
#endif /* !defined EXIT_SUCCESS */
|
||||
|
||||
#ifndef EXIT_FAILURE
|
||||
#define EXIT_FAILURE 1
|
||||
#endif /* !defined EXIT_FAILURE */
|
||||
|
||||
#ifndef SECSPERMIN
|
||||
#define SECSPERMIN 60
|
||||
#endif /* !defined SECSPERMIN */
|
||||
|
||||
#ifndef MINSPERHOUR
|
||||
#define MINSPERHOUR 60
|
||||
#endif /* !defined MINSPERHOUR */
|
||||
|
||||
#ifndef SECSPERHOUR
|
||||
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
|
||||
#endif /* !defined SECSPERHOUR */
|
||||
|
||||
#ifndef HOURSPERDAY
|
||||
#define HOURSPERDAY 24
|
||||
#endif /* !defined HOURSPERDAY */
|
||||
|
||||
#ifndef EPOCH_YEAR
|
||||
#define EPOCH_YEAR 1970
|
||||
#endif /* !defined EPOCH_YEAR */
|
||||
|
||||
#ifndef TM_YEAR_BASE
|
||||
#define TM_YEAR_BASE 1900
|
||||
#endif /* !defined TM_YEAR_BASE */
|
||||
|
||||
#ifndef DAYSPERNYEAR
|
||||
#define DAYSPERNYEAR 365
|
||||
#endif /* !defined DAYSPERNYEAR */
|
||||
|
||||
#ifndef isleap
|
||||
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
|
||||
#endif /* !defined isleap */
|
||||
|
||||
#ifndef isleap_sum
|
||||
/*
|
||||
** See tzfile.h for details on isleap_sum.
|
||||
*/
|
||||
#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
|
||||
#endif /* !defined isleap_sum */
|
||||
|
||||
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY)
|
||||
#define SECSPERNYEAR (SECSPERDAY * DAYSPERNYEAR)
|
||||
#define SECSPERLYEAR (SECSPERNYEAR + SECSPERDAY)
|
||||
|
||||
#if HAVE_GETTEXT
|
||||
#include "locale.h" /* for setlocale */
|
||||
#include "libintl.h"
|
||||
#endif /* HAVE_GETTEXT */
|
||||
|
||||
#ifndef GNUC_or_lint
|
||||
#ifdef lint
|
||||
#define GNUC_or_lint
|
||||
#else /* !defined lint */
|
||||
#ifdef __GNUC__
|
||||
#define GNUC_or_lint
|
||||
#endif /* defined __GNUC__ */
|
||||
#endif /* !defined lint */
|
||||
#endif /* !defined GNUC_or_lint */
|
||||
|
||||
#ifndef INITIALIZE
|
||||
#ifdef GNUC_or_lint
|
||||
#define INITIALIZE(x) ((x) = 0)
|
||||
#else /* !defined GNUC_or_lint */
|
||||
#define INITIALIZE(x)
|
||||
#endif /* !defined GNUC_or_lint */
|
||||
#endif /* !defined INITIALIZE */
|
||||
|
||||
/*
|
||||
** For the benefit of GNU folk...
|
||||
** `_(MSGID)' uses the current locale's message library string for MSGID.
|
||||
** The default is to use gettext if available, and use MSGID otherwise.
|
||||
*/
|
||||
|
||||
#ifndef _
|
||||
#if HAVE_GETTEXT
|
||||
#define _(msgid) gettext(msgid)
|
||||
#else /* !HAVE_GETTEXT */
|
||||
#define _(msgid) msgid
|
||||
#endif /* !HAVE_GETTEXT */
|
||||
#endif /* !defined _ */
|
||||
|
||||
#ifndef TZ_DOMAIN
|
||||
#define TZ_DOMAIN "tz"
|
||||
#endif /* !defined TZ_DOMAIN */
|
||||
|
||||
#ifndef P
|
||||
#if __STDC__
|
||||
#define P(x) x
|
||||
#else /* !__STDC__ */
|
||||
#define P(x) ()
|
||||
#endif /* !__STDC__ */
|
||||
#endif /* !defined P */
|
||||
|
||||
extern char ** environ;
|
||||
extern int getopt P((int argc, char * const argv[],
|
||||
const char * options));
|
||||
extern char * optarg;
|
||||
extern int optind;
|
||||
extern char * tzname[2];
|
||||
|
||||
static time_t absolute_min_time;
|
||||
static time_t absolute_max_time;
|
||||
static size_t longest;
|
||||
static char * progname;
|
||||
static int warned;
|
||||
|
||||
static char * abbr P((struct tm * tmp));
|
||||
static void abbrok P((const char * abbrp, const char * zone));
|
||||
static long delta P((struct tm * newp, struct tm * oldp));
|
||||
static void dumptime P((const struct tm * tmp));
|
||||
static time_t hunt P((char * name, time_t lot, time_t hit));
|
||||
static void setabsolutes P((void));
|
||||
static void show P((char * zone, time_t t, int v));
|
||||
static const char * tformat P((void));
|
||||
static time_t yeartot P((long y));
|
||||
|
||||
#ifndef TYPECHECK
|
||||
#define my_localtime localtime
|
||||
#else /* !defined TYPECHECK */
|
||||
static struct tm *
|
||||
my_localtime(tp)
|
||||
time_t * tp;
|
||||
{
|
||||
register struct tm * tmp;
|
||||
|
||||
tmp = localtime(tp);
|
||||
if (tp != NULL && tmp != NULL) {
|
||||
struct tm tm;
|
||||
register time_t t;
|
||||
|
||||
tm = *tmp;
|
||||
t = mktime(&tm);
|
||||
if (t - *tp >= 1 || *tp - t >= 1) {
|
||||
(void) fflush(stdout);
|
||||
(void) fprintf(stderr, "\n%s: ", progname);
|
||||
(void) fprintf(stderr, tformat(), *tp);
|
||||
(void) fprintf(stderr, " ->");
|
||||
(void) fprintf(stderr, " year=%d", tmp->tm_year);
|
||||
(void) fprintf(stderr, " mon=%d", tmp->tm_mon);
|
||||
(void) fprintf(stderr, " mday=%d", tmp->tm_mday);
|
||||
(void) fprintf(stderr, " hour=%d", tmp->tm_hour);
|
||||
(void) fprintf(stderr, " min=%d", tmp->tm_min);
|
||||
(void) fprintf(stderr, " sec=%d", tmp->tm_sec);
|
||||
(void) fprintf(stderr, " isdst=%d", tmp->tm_isdst);
|
||||
(void) fprintf(stderr, " -> ");
|
||||
(void) fprintf(stderr, tformat(), t);
|
||||
(void) fprintf(stderr, "\n");
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
#endif /* !defined TYPECHECK */
|
||||
|
||||
static void
|
||||
abbrok(abbrp, zone)
|
||||
const char * const abbrp;
|
||||
const char * const zone;
|
||||
{
|
||||
register const char * cp;
|
||||
register char * wp;
|
||||
|
||||
if (warned)
|
||||
return;
|
||||
cp = abbrp;
|
||||
wp = NULL;
|
||||
while (isascii((unsigned char) *cp) && isalpha((unsigned char) *cp))
|
||||
++cp;
|
||||
if (cp - abbrp == 0)
|
||||
wp = _("lacks alphabetic at start");
|
||||
else if (cp - abbrp < 3)
|
||||
wp = _("has fewer than 3 alphabetics");
|
||||
else if (cp - abbrp > 6)
|
||||
wp = _("has more than 6 alphabetics");
|
||||
if (wp == NULL && (*cp == '+' || *cp == '-')) {
|
||||
++cp;
|
||||
if (isascii((unsigned char) *cp) &&
|
||||
isdigit((unsigned char) *cp))
|
||||
if (*cp++ == '1' && *cp >= '0' && *cp <= '4')
|
||||
++cp;
|
||||
if (*cp != '\0')
|
||||
wp = _("differs from POSIX standard");
|
||||
}
|
||||
if (wp == NULL)
|
||||
return;
|
||||
(void) fflush(stdout);
|
||||
(void) fprintf(stderr,
|
||||
_("%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"),
|
||||
progname, zone, abbrp, wp);
|
||||
warned = TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char * argv[];
|
||||
{
|
||||
register int i;
|
||||
register int c;
|
||||
register int vflag;
|
||||
register char * cutarg;
|
||||
register long cutloyear = ZDUMP_LO_YEAR;
|
||||
register long cuthiyear = ZDUMP_HI_YEAR;
|
||||
register time_t cutlotime;
|
||||
register time_t cuthitime;
|
||||
register char ** fakeenv;
|
||||
time_t now;
|
||||
time_t t;
|
||||
time_t newt;
|
||||
struct tm tm;
|
||||
struct tm newtm;
|
||||
register struct tm * tmp;
|
||||
register struct tm * newtmp;
|
||||
|
||||
INITIALIZE(cutlotime);
|
||||
INITIALIZE(cuthitime);
|
||||
#if HAVE_GETTEXT
|
||||
(void) setlocale(LC_ALL, "");
|
||||
#ifdef TZ_DOMAINDIR
|
||||
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
|
||||
#endif /* defined TEXTDOMAINDIR */
|
||||
(void) textdomain(TZ_DOMAIN);
|
||||
#endif /* HAVE_GETTEXT */
|
||||
progname = argv[0];
|
||||
for (i = 1; i < argc; ++i)
|
||||
if (strcmp(argv[i], "--version") == 0) {
|
||||
(void) printf("%s\n", elsieid);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
vflag = 0;
|
||||
cutarg = NULL;
|
||||
while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v')
|
||||
if (c == 'v')
|
||||
vflag = 1;
|
||||
else cutarg = optarg;
|
||||
if ((c != EOF && c != -1) ||
|
||||
(optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
|
||||
(void) fprintf(stderr,
|
||||
_("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
|
||||
progname, progname);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (vflag) {
|
||||
if (cutarg != NULL) {
|
||||
long lo;
|
||||
long hi;
|
||||
char dummy;
|
||||
|
||||
if (sscanf(cutarg, "%ld%c", &hi, &dummy) == 1) {
|
||||
cuthiyear = hi;
|
||||
} else if (sscanf(cutarg, "%ld,%ld%c",
|
||||
&lo, &hi, &dummy) == 2) {
|
||||
cutloyear = lo;
|
||||
cuthiyear = hi;
|
||||
} else {
|
||||
(void) fprintf(stderr, _("%s: wild -c argument %s\n"),
|
||||
progname, cutarg);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
setabsolutes();
|
||||
cutlotime = yeartot(cutloyear);
|
||||
cuthitime = yeartot(cuthiyear);
|
||||
}
|
||||
(void) time(&now);
|
||||
longest = 0;
|
||||
for (i = optind; i < argc; ++i)
|
||||
if (strlen(argv[i]) > longest)
|
||||
longest = strlen(argv[i]);
|
||||
{
|
||||
register int from;
|
||||
register int to;
|
||||
|
||||
for (i = 0; environ[i] != NULL; ++i)
|
||||
continue;
|
||||
fakeenv = (char **) malloc((size_t) ((i + 2) *
|
||||
sizeof *fakeenv));
|
||||
if (fakeenv == NULL ||
|
||||
(fakeenv[0] = (char *) malloc(longest + 4)) == NULL) {
|
||||
(void) perror(progname);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
to = 0;
|
||||
(void) strcpy(fakeenv[to++], "TZ=");
|
||||
for (from = 0; environ[from] != NULL; ++from)
|
||||
if (strncmp(environ[from], "TZ=", 3) != 0)
|
||||
fakeenv[to++] = environ[from];
|
||||
fakeenv[to] = NULL;
|
||||
environ = fakeenv;
|
||||
}
|
||||
for (i = optind; i < argc; ++i) {
|
||||
static char buf[MAX_STRING_LENGTH];
|
||||
|
||||
(void) strcpy(&fakeenv[0][3], argv[i]);
|
||||
if (!vflag) {
|
||||
show(argv[i], now, FALSE);
|
||||
continue;
|
||||
}
|
||||
warned = FALSE;
|
||||
t = absolute_min_time;
|
||||
show(argv[i], t, TRUE);
|
||||
t += SECSPERHOUR * HOURSPERDAY;
|
||||
show(argv[i], t, TRUE);
|
||||
if (t < cutlotime)
|
||||
t = cutlotime;
|
||||
tmp = my_localtime(&t);
|
||||
if (tmp != NULL) {
|
||||
tm = *tmp;
|
||||
(void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
|
||||
}
|
||||
for ( ; ; ) {
|
||||
if (t >= cuthitime)
|
||||
break;
|
||||
newt = t + SECSPERHOUR * 12;
|
||||
if (newt >= cuthitime)
|
||||
break;
|
||||
if (newt <= t)
|
||||
break;
|
||||
newtmp = localtime(&newt);
|
||||
if (newtmp != NULL)
|
||||
newtm = *newtmp;
|
||||
if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) :
|
||||
(delta(&newtm, &tm) != (newt - t) ||
|
||||
newtm.tm_isdst != tm.tm_isdst ||
|
||||
strcmp(abbr(&newtm), buf) != 0)) {
|
||||
newt = hunt(argv[i], t, newt);
|
||||
newtmp = localtime(&newt);
|
||||
if (newtmp != NULL) {
|
||||
newtm = *newtmp;
|
||||
(void) strncpy(buf,
|
||||
abbr(&newtm),
|
||||
(sizeof buf) - 1);
|
||||
}
|
||||
}
|
||||
t = newt;
|
||||
tm = newtm;
|
||||
tmp = newtmp;
|
||||
}
|
||||
t = absolute_max_time;
|
||||
t -= SECSPERHOUR * HOURSPERDAY;
|
||||
show(argv[i], t, TRUE);
|
||||
t += SECSPERHOUR * HOURSPERDAY;
|
||||
show(argv[i], t, TRUE);
|
||||
}
|
||||
if (fflush(stdout) || ferror(stdout)) {
|
||||
(void) fprintf(stderr, "%s: ", progname);
|
||||
(void) perror(_("Error writing standard output"));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
exit(EXIT_SUCCESS);
|
||||
/* If exit fails to exit... */
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
static void
|
||||
setabsolutes()
|
||||
{
|
||||
if (0.5 == (time_t) 0.5) {
|
||||
/*
|
||||
** time_t is floating.
|
||||
*/
|
||||
if (sizeof (time_t) == sizeof (float)) {
|
||||
absolute_min_time = (time_t) -FLT_MAX;
|
||||
absolute_max_time = (time_t) FLT_MAX;
|
||||
} else if (sizeof (time_t) == sizeof (double)) {
|
||||
absolute_min_time = (time_t) -DBL_MAX;
|
||||
absolute_max_time = (time_t) DBL_MAX;
|
||||
} else {
|
||||
(void) fprintf(stderr,
|
||||
_("%s: use of -v on system with floating time_t other than float or double\n"),
|
||||
progname);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
} else if (0 > (time_t) -1) {
|
||||
/*
|
||||
** time_t is signed. Assume overflow wraps around.
|
||||
*/
|
||||
time_t t = 0;
|
||||
time_t t1 = 1;
|
||||
|
||||
while (t < t1) {
|
||||
t = t1;
|
||||
t1 = 2 * t1 + 1;
|
||||
}
|
||||
|
||||
absolute_max_time = t;
|
||||
t = -t;
|
||||
absolute_min_time = t - 1;
|
||||
if (t < absolute_min_time)
|
||||
absolute_min_time = t;
|
||||
} else {
|
||||
/*
|
||||
** time_t is unsigned.
|
||||
*/
|
||||
absolute_min_time = 0;
|
||||
absolute_max_time = absolute_min_time - 1;
|
||||
}
|
||||
}
|
||||
|
||||
static time_t
|
||||
yeartot(y)
|
||||
const long y;
|
||||
{
|
||||
register long myy;
|
||||
register long seconds;
|
||||
register time_t t;
|
||||
|
||||
myy = EPOCH_YEAR;
|
||||
t = 0;
|
||||
while (myy != y) {
|
||||
if (myy < y) {
|
||||
seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
|
||||
++myy;
|
||||
if (t > absolute_max_time - seconds) {
|
||||
t = absolute_max_time;
|
||||
break;
|
||||
}
|
||||
t += seconds;
|
||||
} else {
|
||||
--myy;
|
||||
seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
|
||||
if (t < absolute_min_time + seconds) {
|
||||
t = absolute_min_time;
|
||||
break;
|
||||
}
|
||||
t -= seconds;
|
||||
}
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
static time_t
|
||||
#if __STDC__
|
||||
hunt(char *name, time_t lot, time_t hit)
|
||||
#else /* !__STDC__ */
|
||||
hunt(name, lot, hit)
|
||||
char * name;
|
||||
time_t lot;
|
||||
time_t hit;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
time_t t;
|
||||
long diff;
|
||||
struct tm lotm;
|
||||
register struct tm * lotmp;
|
||||
struct tm tm;
|
||||
register struct tm * tmp;
|
||||
char loab[MAX_STRING_LENGTH];
|
||||
|
||||
lotmp = my_localtime(&lot);
|
||||
if (lotmp != NULL) {
|
||||
lotm = *lotmp;
|
||||
(void) strncpy(loab, abbr(&lotm), (sizeof loab) - 1);
|
||||
}
|
||||
for ( ; ; ) {
|
||||
diff = (long) (hit - lot);
|
||||
if (diff < 2)
|
||||
break;
|
||||
t = lot;
|
||||
t += diff / 2;
|
||||
if (t <= lot)
|
||||
++t;
|
||||
else if (t >= hit)
|
||||
--t;
|
||||
tmp = my_localtime(&t);
|
||||
if (tmp != NULL)
|
||||
tm = *tmp;
|
||||
if ((lotmp == NULL || tmp == NULL) ? (lotmp == tmp) :
|
||||
(delta(&tm, &lotm) == (t - lot) &&
|
||||
tm.tm_isdst == lotm.tm_isdst &&
|
||||
strcmp(abbr(&tm), loab) == 0)) {
|
||||
lot = t;
|
||||
lotm = tm;
|
||||
lotmp = tmp;
|
||||
} else hit = t;
|
||||
}
|
||||
show(name, lot, TRUE);
|
||||
show(name, hit, TRUE);
|
||||
return hit;
|
||||
}
|
||||
|
||||
/*
|
||||
** Thanks to Paul Eggert for logic used in delta.
|
||||
*/
|
||||
|
||||
static long
|
||||
delta(newp, oldp)
|
||||
struct tm * newp;
|
||||
struct tm * oldp;
|
||||
{
|
||||
register long result;
|
||||
register int tmy;
|
||||
|
||||
if (newp->tm_year < oldp->tm_year)
|
||||
return -delta(oldp, newp);
|
||||
result = 0;
|
||||
for (tmy = oldp->tm_year; tmy < newp->tm_year; ++tmy)
|
||||
result += DAYSPERNYEAR + isleap_sum(tmy, TM_YEAR_BASE);
|
||||
result += newp->tm_yday - oldp->tm_yday;
|
||||
result *= HOURSPERDAY;
|
||||
result += newp->tm_hour - oldp->tm_hour;
|
||||
result *= MINSPERHOUR;
|
||||
result += newp->tm_min - oldp->tm_min;
|
||||
result *= SECSPERMIN;
|
||||
result += newp->tm_sec - oldp->tm_sec;
|
||||
return result;
|
||||
}
|
||||
|
||||
static void
|
||||
#if __STDC__
|
||||
show(char *zone, time_t t, int v)
|
||||
#else /* !__STDC__ */
|
||||
show(zone, t, v)
|
||||
char * zone;
|
||||
time_t t;
|
||||
int v;
|
||||
#endif /* !__STDC__ */
|
||||
{
|
||||
register struct tm * tmp;
|
||||
|
||||
(void) printf("%-*s ", (int) longest, zone);
|
||||
if (v) {
|
||||
tmp = gmtime(&t);
|
||||
if (tmp == NULL) {
|
||||
(void) printf(tformat(), t);
|
||||
} else {
|
||||
dumptime(tmp);
|
||||
(void) printf(" UTC");
|
||||
}
|
||||
(void) printf(" = ");
|
||||
}
|
||||
tmp = my_localtime(&t);
|
||||
dumptime(tmp);
|
||||
if (tmp != NULL) {
|
||||
if (*abbr(tmp) != '\0')
|
||||
(void) printf(" %s", abbr(tmp));
|
||||
if (v) {
|
||||
(void) printf(" isdst=%d", tmp->tm_isdst);
|
||||
#ifdef TM_GMTOFF
|
||||
(void) printf(" gmtoff=%ld", tmp->TM_GMTOFF);
|
||||
#endif /* defined TM_GMTOFF */
|
||||
}
|
||||
}
|
||||
(void) printf("\n");
|
||||
if (tmp != NULL && *abbr(tmp) != '\0')
|
||||
abbrok(abbr(tmp), zone);
|
||||
}
|
||||
|
||||
static char *
|
||||
abbr(tmp)
|
||||
struct tm * tmp;
|
||||
{
|
||||
register char * result;
|
||||
static char nada;
|
||||
|
||||
if (tmp->tm_isdst != 0 && tmp->tm_isdst != 1)
|
||||
return &nada;
|
||||
result = tzname[tmp->tm_isdst];
|
||||
return (result == NULL) ? &nada : result;
|
||||
}
|
||||
|
||||
/*
|
||||
** The code below can fail on certain theoretical systems;
|
||||
** it works on all known real-world systems as of 2004-12-30.
|
||||
*/
|
||||
|
||||
static const char *
|
||||
tformat()
|
||||
{
|
||||
if (0.5 == (time_t) 0.5) { /* floating */
|
||||
if (sizeof (time_t) > sizeof (double))
|
||||
return "%Lg";
|
||||
return "%g";
|
||||
}
|
||||
if (0 > (time_t) -1) { /* signed */
|
||||
if (sizeof (time_t) > sizeof (long))
|
||||
return "%lld";
|
||||
if (sizeof (time_t) > sizeof (int))
|
||||
return "%ld";
|
||||
return "%d";
|
||||
}
|
||||
if (sizeof (time_t) > sizeof (unsigned long))
|
||||
return "%llu";
|
||||
if (sizeof (time_t) > sizeof (unsigned int))
|
||||
return "%lu";
|
||||
return "%u";
|
||||
}
|
||||
|
||||
static void
|
||||
dumptime(timeptr)
|
||||
register const struct tm * timeptr;
|
||||
{
|
||||
static const char wday_name[][3] = {
|
||||
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
|
||||
};
|
||||
static const char mon_name[][3] = {
|
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
|
||||
};
|
||||
register const char * wn;
|
||||
register const char * mn;
|
||||
register int lead;
|
||||
register int trail;
|
||||
|
||||
if (timeptr == NULL) {
|
||||
(void) printf("NULL");
|
||||
return;
|
||||
}
|
||||
/*
|
||||
** The packaged versions of localtime and gmtime never put out-of-range
|
||||
** values in tm_wday or tm_mon, but since this code might be compiled
|
||||
** with other (perhaps experimental) versions, paranoia is in order.
|
||||
*/
|
||||
if (timeptr->tm_wday < 0 || timeptr->tm_wday >=
|
||||
(int) (sizeof wday_name / sizeof wday_name[0]))
|
||||
wn = "???";
|
||||
else wn = wday_name[timeptr->tm_wday];
|
||||
if (timeptr->tm_mon < 0 || timeptr->tm_mon >=
|
||||
(int) (sizeof mon_name / sizeof mon_name[0]))
|
||||
mn = "???";
|
||||
else mn = mon_name[timeptr->tm_mon];
|
||||
(void) printf("%.3s %.3s%3d %.2d:%.2d:%.2d ",
|
||||
wn, mn,
|
||||
timeptr->tm_mday, timeptr->tm_hour,
|
||||
timeptr->tm_min, timeptr->tm_sec);
|
||||
#define DIVISOR 10
|
||||
trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
|
||||
lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
|
||||
trail / DIVISOR;
|
||||
trail %= DIVISOR;
|
||||
if (trail < 0 && lead > 0) {
|
||||
trail += DIVISOR;
|
||||
--lead;
|
||||
} else if (lead < 0 && trail > 0) {
|
||||
trail -= DIVISOR;
|
||||
++lead;
|
||||
}
|
||||
if (lead == 0)
|
||||
(void) printf("%d", trail);
|
||||
else (void) printf("%d%d", lead, ((trail < 0) ? -trail : trail));
|
||||
}
|
436
commands/zoneinfo/zic.8
Normal file
436
commands/zoneinfo/zic.8
Normal file
|
@ -0,0 +1,436 @@
|
|||
.TH ZIC 8
|
||||
.SH NAME
|
||||
zic \- time zone compiler
|
||||
.SH SYNOPSIS
|
||||
.B zic
|
||||
[
|
||||
.B \-\-version
|
||||
]
|
||||
[
|
||||
.B \-v
|
||||
] [
|
||||
.B \-d
|
||||
.I directory
|
||||
] [
|
||||
.B \-l
|
||||
.I localtime
|
||||
] [
|
||||
.B \-p
|
||||
.I posixrules
|
||||
] [
|
||||
.B \-L
|
||||
.I leapsecondfilename
|
||||
] [
|
||||
.B \-s
|
||||
] [
|
||||
.B \-y
|
||||
.I command
|
||||
] [
|
||||
.I filename
|
||||
\&... ]
|
||||
.SH DESCRIPTION
|
||||
.if t .ds lq ``
|
||||
.if t .ds rq ''
|
||||
.if n .ds lq \&"\"
|
||||
.if n .ds rq \&"\"
|
||||
.de q
|
||||
\\$3\*(lq\\$1\*(rq\\$2
|
||||
..
|
||||
.I Zic
|
||||
reads text from the file(s) named on the command line
|
||||
and creates the time conversion information files specified in this input.
|
||||
If a
|
||||
.I filename
|
||||
is
|
||||
.BR \- ,
|
||||
the standard input is read.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BI "\-\-version"
|
||||
Output version information and exit.
|
||||
.TP
|
||||
.BI "\-d " directory
|
||||
Create time conversion information files in the named directory rather than
|
||||
in the standard directory named below.
|
||||
.TP
|
||||
.BI "\-l " timezone
|
||||
Use the given time zone as local time.
|
||||
.I Zic
|
||||
will act as if the input contained a link line of the form
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link \fItimezone\fP localtime
|
||||
.TP
|
||||
.BI "\-p " timezone
|
||||
Use the given time zone's rules when handling POSIX-format
|
||||
time zone environment variables.
|
||||
.I Zic
|
||||
will act as if the input contained a link line of the form
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link \fItimezone\fP posixrules
|
||||
.TP
|
||||
.BI "\-L " leapsecondfilename
|
||||
Read leap second information from the file with the given name.
|
||||
If this option is not used,
|
||||
no leap second information appears in output files.
|
||||
.TP
|
||||
.B \-v
|
||||
Complain if a year that appears in a data file is outside the range
|
||||
of years representable by
|
||||
.IR time (2)
|
||||
values.
|
||||
Also complain if a time of 24:00
|
||||
(which cannot be handled by pre-1998 versions of
|
||||
.IR zic )
|
||||
appears in the input.
|
||||
.TP
|
||||
.B \-s
|
||||
Limit time values stored in output files to values that are the same
|
||||
whether they're taken to be signed or unsigned.
|
||||
You can use this option to generate SVVS-compatible files.
|
||||
.TP
|
||||
.BI "\-y " command
|
||||
Use the given
|
||||
.I command
|
||||
rather than
|
||||
.B yearistype
|
||||
when checking year types (see below).
|
||||
.PP
|
||||
Input lines are made up of fields.
|
||||
Fields are separated from one another by any number of white space characters.
|
||||
Leading and trailing white space on input lines is ignored.
|
||||
An unquoted sharp character (#) in the input introduces a comment which extends
|
||||
to the end of the line the sharp character appears on.
|
||||
White space characters and sharp characters may be enclosed in double quotes
|
||||
(") if they're to be used as part of a field.
|
||||
Any line that is blank (after comment stripping) is ignored.
|
||||
Non-blank lines are expected to be of one of three types:
|
||||
rule lines, zone lines, and link lines.
|
||||
.PP
|
||||
A rule line has the form
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
|
||||
.sp
|
||||
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
.sp
|
||||
For example:
|
||||
.ti +.5i
|
||||
.sp
|
||||
Rule US 1967 1973 \- Apr lastSun 2:00 1:00 D
|
||||
.sp
|
||||
.fi
|
||||
The fields that make up a rule line are:
|
||||
.TP "\w'LETTER/S'u"
|
||||
.B NAME
|
||||
Gives the (arbitrary) name of the set of rules this rule is part of.
|
||||
.TP
|
||||
.B FROM
|
||||
Gives the first year in which the rule applies.
|
||||
Any integer year can be supplied; the Gregorian calendar is assumed.
|
||||
The word
|
||||
.B minimum
|
||||
(or an abbreviation) means the minimum year representable as an integer.
|
||||
The word
|
||||
.B maximum
|
||||
(or an abbreviation) means the maximum year representable as an integer.
|
||||
Rules can describe times that are not representable as time values,
|
||||
with the unrepresentable times ignored; this allows rules to be portable
|
||||
among hosts with differing time value types.
|
||||
.TP
|
||||
.B TO
|
||||
Gives the final year in which the rule applies.
|
||||
In addition to
|
||||
.B minimum
|
||||
and
|
||||
.B maximum
|
||||
(as above),
|
||||
the word
|
||||
.B only
|
||||
(or an abbreviation)
|
||||
may be used to repeat the value of the
|
||||
.B FROM
|
||||
field.
|
||||
.TP
|
||||
.B TYPE
|
||||
Gives the type of year in which the rule applies.
|
||||
If
|
||||
.B TYPE
|
||||
is
|
||||
.B \-
|
||||
then the rule applies in all years between
|
||||
.B FROM
|
||||
and
|
||||
.B TO
|
||||
inclusive.
|
||||
If
|
||||
.B TYPE
|
||||
is something else, then
|
||||
.I zic
|
||||
executes the command
|
||||
.ti +.5i
|
||||
\fByearistype\fP \fIyear\fP \fItype\fP
|
||||
.br
|
||||
to check the type of a year:
|
||||
an exit status of zero is taken to mean that the year is of the given type;
|
||||
an exit status of one is taken to mean that the year is not of the given type.
|
||||
.TP
|
||||
.B IN
|
||||
Names the month in which the rule takes effect.
|
||||
Month names may be abbreviated.
|
||||
.TP
|
||||
.B ON
|
||||
Gives the day on which the rule takes effect.
|
||||
Recognized forms include:
|
||||
.nf
|
||||
.in +.5i
|
||||
.sp
|
||||
.ta \w'Sun<=25\0\0'u
|
||||
5 the fifth of the month
|
||||
lastSun the last Sunday in the month
|
||||
lastMon the last Monday in the month
|
||||
Sun>=8 first Sunday on or after the eighth
|
||||
Sun<=25 last Sunday on or before the 25th
|
||||
.fi
|
||||
.in -.5i
|
||||
.sp
|
||||
Names of days of the week may be abbreviated or spelled out in full.
|
||||
Note that there must be no spaces within the
|
||||
.B ON
|
||||
field.
|
||||
.TP
|
||||
.B AT
|
||||
Gives the time of day at which the rule takes effect.
|
||||
Recognized forms include:
|
||||
.nf
|
||||
.in +.5i
|
||||
.sp
|
||||
.ta \w'1:28:13\0\0'u
|
||||
2 time in hours
|
||||
2:00 time in hours and minutes
|
||||
15:00 24-hour format time (for times after noon)
|
||||
1:28:14 time in hours, minutes, and seconds
|
||||
\- equivalent to 0
|
||||
.fi
|
||||
.in -.5i
|
||||
.sp
|
||||
where hour 0 is midnight at the start of the day,
|
||||
and hour 24 is midnight at the end of the day.
|
||||
Any of these forms may be followed by the letter
|
||||
.B w
|
||||
if the given time is local
|
||||
.q "wall clock"
|
||||
time,
|
||||
.B s
|
||||
if the given time is local
|
||||
.q standard
|
||||
time, or
|
||||
.B u
|
||||
(or
|
||||
.B g
|
||||
or
|
||||
.BR z )
|
||||
if the given time is universal time;
|
||||
in the absence of an indicator,
|
||||
wall clock time is assumed.
|
||||
.TP
|
||||
.B SAVE
|
||||
Gives the amount of time to be added to local standard time when the rule is in
|
||||
effect.
|
||||
This field has the same format as the
|
||||
.B AT
|
||||
field
|
||||
(although, of course, the
|
||||
.B w
|
||||
and
|
||||
.B s
|
||||
suffixes are not used).
|
||||
.TP
|
||||
.B LETTER/S
|
||||
Gives the
|
||||
.q "variable part"
|
||||
(for example, the
|
||||
.q S
|
||||
or
|
||||
.q D
|
||||
in
|
||||
.q EST
|
||||
or
|
||||
.q EDT )
|
||||
of time zone abbreviations to be used when this rule is in effect.
|
||||
If this field is
|
||||
.BR \- ,
|
||||
the variable part is null.
|
||||
.PP
|
||||
A zone line has the form
|
||||
.sp
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
|
||||
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
.sp
|
||||
For example:
|
||||
.sp
|
||||
.ti +.5i
|
||||
Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00
|
||||
.sp
|
||||
.fi
|
||||
The fields that make up a zone line are:
|
||||
.TP "\w'GMTOFF'u"
|
||||
.B NAME
|
||||
The name of the time zone.
|
||||
This is the name used in creating the time conversion information file for the
|
||||
zone.
|
||||
.TP
|
||||
.B GMTOFF
|
||||
The amount of time to add to UTC to get standard time in this zone.
|
||||
This field has the same format as the
|
||||
.B AT
|
||||
and
|
||||
.B SAVE
|
||||
fields of rule lines;
|
||||
begin the field with a minus sign if time must be subtracted from UTC.
|
||||
.TP
|
||||
.B RULES/SAVE
|
||||
The name of the rule(s) that apply in the time zone or,
|
||||
alternately, an amount of time to add to local standard time.
|
||||
If this field is
|
||||
.B \-
|
||||
then standard time always applies in the time zone.
|
||||
.TP
|
||||
.B FORMAT
|
||||
The format for time zone abbreviations in this time zone.
|
||||
The pair of characters
|
||||
.B %s
|
||||
is used to show where the
|
||||
.q "variable part"
|
||||
of the time zone abbreviation goes.
|
||||
Alternately,
|
||||
a slash (/)
|
||||
separates standard and daylight abbreviations.
|
||||
.TP
|
||||
.B UNTIL
|
||||
The time at which the UTC offset or the rule(s) change for a location.
|
||||
It is specified as a year, a month, a day, and a time of day.
|
||||
If this is specified,
|
||||
the time zone information is generated from the given UTC offset
|
||||
and rule change until the time specified.
|
||||
The month, day, and time of day have the same format as the IN, ON, and AT
|
||||
columns of a rule; trailing columns can be omitted, and default to the
|
||||
earliest possible value for the missing columns.
|
||||
.IP
|
||||
The next line must be a
|
||||
.q continuation
|
||||
line; this has the same form as a zone line except that the
|
||||
string
|
||||
.q Zone
|
||||
and the name are omitted, as the continuation line will
|
||||
place information starting at the time specified as the
|
||||
.B UNTIL
|
||||
field in the previous line in the file used by the previous line.
|
||||
Continuation lines may contain an
|
||||
.B UNTIL
|
||||
field, just as zone lines do, indicating that the next line is a further
|
||||
continuation.
|
||||
.PP
|
||||
A link line has the form
|
||||
.sp
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
|
||||
Link LINK-FROM LINK-TO
|
||||
.sp
|
||||
For example:
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link Europe/Istanbul Asia/Istanbul
|
||||
.sp
|
||||
.fi
|
||||
The
|
||||
.B LINK-FROM
|
||||
field should appear as the
|
||||
.B NAME
|
||||
field in some zone line;
|
||||
the
|
||||
.B LINK-TO
|
||||
field is used as an alternate name for that zone.
|
||||
.PP
|
||||
Except for continuation lines,
|
||||
lines may appear in any order in the input.
|
||||
.PP
|
||||
Lines in the file that describes leap seconds have the following form:
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
|
||||
.sp
|
||||
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
||||
.sp
|
||||
For example:
|
||||
.ti +.5i
|
||||
.sp
|
||||
Leap 1974 Dec 31 23:59:60 + S
|
||||
.sp
|
||||
.fi
|
||||
The
|
||||
.BR YEAR ,
|
||||
.BR MONTH ,
|
||||
.BR DAY ,
|
||||
and
|
||||
.B HH:MM:SS
|
||||
fields tell when the leap second happened.
|
||||
The
|
||||
.B CORR
|
||||
field
|
||||
should be
|
||||
.q +
|
||||
if a second was added
|
||||
or
|
||||
.q -
|
||||
if a second was skipped.
|
||||
.\" There's no need to document the following, since it's impossible for more
|
||||
.\" than one leap second to be inserted or deleted at a time.
|
||||
.\" The C Standard is in error in suggesting the possibility.
|
||||
.\" See Terry J Quinn, The BIPM and the accurate measure of time,
|
||||
.\" Proc IEEE 79, 7 (July 1991), 894-905.
|
||||
.\" or
|
||||
.\" .q ++
|
||||
.\" if two seconds were added
|
||||
.\" or
|
||||
.\" .q --
|
||||
.\" if two seconds were skipped.
|
||||
The
|
||||
.B R/S
|
||||
field
|
||||
should be (an abbreviation of)
|
||||
.q Stationary
|
||||
if the leap second time given by the other fields should be interpreted as UTC
|
||||
or
|
||||
(an abbreviation of)
|
||||
.q Rolling
|
||||
if the leap second time given by the other fields should be interpreted as
|
||||
local wall clock time.
|
||||
.SH NOTES
|
||||
For areas with more than two types of local time,
|
||||
you may need to use local standard time in the
|
||||
.B AT
|
||||
field of the earliest transition time's rule to ensure that
|
||||
the earliest transition time recorded in the compiled file is correct.
|
||||
.PP
|
||||
If,
|
||||
for a particular zone,
|
||||
a clock advance caused by the start of daylight saving
|
||||
coincides with and is equal to
|
||||
a clock retreat caused by a change in UTC offset,
|
||||
.IR zic
|
||||
produces a single transition to daylight saving at the new UTC offset
|
||||
(without any change in wall clock time).
|
||||
To get separate transitions
|
||||
use multiple zone continuation lines
|
||||
specifying transition instants using universal time.
|
||||
.SH FILE
|
||||
/usr/local/etc/zoneinfo standard directory used for created files
|
||||
.SH "SEE ALSO"
|
||||
newctime(3), tzfile(5), zdump(8)
|
||||
.\" @(#)zic.8 7.24
|
259
commands/zoneinfo/zic.8.txt
Normal file
259
commands/zoneinfo/zic.8.txt
Normal file
|
@ -0,0 +1,259 @@
|
|||
NAME
|
||||
|
||||
zic - time zone compiler
|
||||
|
||||
SYNOPSIS
|
||||
zic [ --version ] [ -v ] [ -d directory ] [ -l localtime ] [
|
||||
-p posixrules ] [ -L leapsecondfilename ] [ -s ] [ -y
|
||||
command ] [ filename ... ]
|
||||
|
||||
DESCRIPTION
|
||||
Zic reads text from the file(s) named on the command line
|
||||
and creates the time conversion information files specified
|
||||
in this input. If a filename is -, the standard input is
|
||||
read.
|
||||
|
||||
These options are available:
|
||||
|
||||
--version
|
||||
Output version information and exit.
|
||||
|
||||
-d directory
|
||||
Create time conversion information files in the named
|
||||
directory rather than in the standard directory named
|
||||
below.
|
||||
|
||||
-l timezone
|
||||
Use the given time zone as local time. Zic will act as
|
||||
if the input contained a link line of the form
|
||||
|
||||
Link timezone localtime
|
||||
|
||||
-p timezone
|
||||
Use the given time zone's rules when handling POSIX-
|
||||
format time zone environment variables. Zic will act
|
||||
as if the input contained a link line of the form
|
||||
|
||||
Link timezone posixrules
|
||||
|
||||
-L leapsecondfilename
|
||||
Read leap second information from the file with the
|
||||
given name. If this option is not used, no leap second
|
||||
information appears in output files.
|
||||
|
||||
-v Complain if a year that appears in a data file is
|
||||
outside the range of years representable by time(2)
|
||||
values. Also complain if a time of 24:00 (which cannot
|
||||
be handled by pre-1998 versions of zic) appears in the
|
||||
input.
|
||||
|
||||
-s Limit time values stored in output files to values that
|
||||
are the same whether they're taken to be signed or
|
||||
unsigned. You can use this option to generate SVVS-
|
||||
compatible files.
|
||||
|
||||
-y command
|
||||
Use the given command rather than yearistype when
|
||||
checking year types (see below).
|
||||
|
||||
Input lines are made up of fields. Fields are separated
|
||||
from one another by any number of white space characters.
|
||||
Leading and trailing white space on input lines is ignored.
|
||||
An unquoted sharp character (#) in the input introduces a
|
||||
comment which extends to the end of the line the sharp
|
||||
character appears on. White space characters and sharp
|
||||
characters may be enclosed in double quotes (") if they're
|
||||
to be used as part of a field. Any line that is blank
|
||||
(after comment stripping) is ignored. Non-blank lines are
|
||||
expected to be of one of three types: rule lines, zone
|
||||
lines, and link lines.
|
||||
|
||||
A rule line has the form
|
||||
|
||||
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
|
||||
For example:
|
||||
|
||||
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
|
||||
|
||||
The fields that make up a rule line are:
|
||||
|
||||
NAME Gives the (arbitrary) name of the set of rules this
|
||||
rule is part of.
|
||||
|
||||
FROM Gives the first year in which the rule applies. Any
|
||||
integer year can be supplied; the Gregorian calendar
|
||||
is assumed. The word minimum (or an abbreviation)
|
||||
means the minimum year representable as an integer.
|
||||
The word maximum (or an abbreviation) means the
|
||||
maximum year representable as an integer. Rules can
|
||||
describe times that are not representable as time
|
||||
values, with the unrepresentable times ignored; this
|
||||
allows rules to be portable among hosts with
|
||||
differing time value types.
|
||||
|
||||
TO Gives the final year in which the rule applies. In
|
||||
addition to minimum and maximum (as above), the word
|
||||
only (or an abbreviation) may be used to repeat the
|
||||
value of the FROM field.
|
||||
|
||||
TYPE Gives the type of year in which the rule applies.
|
||||
If TYPE is - then the rule applies in all years
|
||||
between FROM and TO inclusive. If TYPE is something
|
||||
else, then zic executes the command
|
||||
yearistype year type
|
||||
to check the type of a year: an exit status of zero
|
||||
is taken to mean that the year is of the given type;
|
||||
an exit status of one is taken to mean that the year
|
||||
is not of the given type.
|
||||
|
||||
IN Names the month in which the rule takes effect.
|
||||
Month names may be abbreviated.
|
||||
|
||||
ON Gives the day on which the rule takes effect.
|
||||
Recognized forms include:
|
||||
|
||||
5 the fifth of the month
|
||||
lastSun the last Sunday in the month
|
||||
lastMon the last Monday in the month
|
||||
Sun>=8 first Sunday on or after the eighth
|
||||
Sun<=25 last Sunday on or before the 25th
|
||||
|
||||
Names of days of the week may be abbreviated or
|
||||
spelled out in full. Note that there must be no
|
||||
spaces within the ON field.
|
||||
|
||||
AT Gives the time of day at which the rule takes
|
||||
effect. Recognized forms include:
|
||||
|
||||
2 time in hours
|
||||
2:00 time in hours and minutes
|
||||
15:00 24-hour format time (for times after noon)
|
||||
1:28:14 time in hours, minutes, and seconds
|
||||
- equivalent to 0
|
||||
|
||||
where hour 0 is midnight at the start of the day,
|
||||
and hour 24 is midnight at the end of the day. Any
|
||||
of these forms may be followed by the letter w if
|
||||
the given time is local "wall clock" time, s if the
|
||||
given time is local "standard" time, or u (or g or
|
||||
z) if the given time is universal time; in the
|
||||
absence of an indicator, wall clock time is assumed.
|
||||
|
||||
SAVE Gives the amount of time to be added to local
|
||||
standard time when the rule is in effect. This
|
||||
field has the same format as the AT field (although,
|
||||
of course, the w and s suffixes are not used).
|
||||
|
||||
LETTER/S
|
||||
Gives the "variable part" (for example, the "S" or
|
||||
"D" in "EST" or "EDT") of time zone abbreviations to
|
||||
be used when this rule is in effect. If this field
|
||||
is -, the variable part is null.
|
||||
|
||||
A zone line has the form
|
||||
|
||||
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
|
||||
|
||||
For example:
|
||||
|
||||
Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00
|
||||
|
||||
The fields that make up a zone line are:
|
||||
|
||||
NAME The name of the time zone. This is the name used in
|
||||
creating the time conversion information file for the
|
||||
zone.
|
||||
|
||||
GMTOFF
|
||||
The amount of time to add to UTC to get standard time
|
||||
in this zone. This field has the same format as the
|
||||
AT and SAVE fields of rule lines; begin the field with
|
||||
a minus sign if time must be subtracted from UTC.
|
||||
|
||||
RULES/SAVE
|
||||
The name of the rule(s) that apply in the time zone
|
||||
or, alternately, an amount of time to add to local
|
||||
standard time. If this field is - then standard time
|
||||
always applies in the time zone.
|
||||
|
||||
FORMAT
|
||||
The format for time zone abbreviations in this time
|
||||
zone. The pair of characters %s is used to show where
|
||||
the "variable part" of the time zone abbreviation
|
||||
goes. Alternately, a slash (/) separates standard and
|
||||
daylight abbreviations.
|
||||
|
||||
UNTIL The time at which the UTC offset or the rule(s) change
|
||||
for a location. It is specified as a year, a month, a
|
||||
day, and a time of day. If this is specified, the
|
||||
time zone information is generated from the given UTC
|
||||
offset and rule change until the time specified. The
|
||||
month, day, and time of day have the same format as
|
||||
the IN, ON, and AT columns of a rule; trailing columns
|
||||
can be omitted, and default to the earliest possible
|
||||
value for the missing columns.
|
||||
|
||||
The next line must be a "continuation" line; this has
|
||||
the same form as a zone line except that the string
|
||||
"Zone" and the name are omitted, as the continuation
|
||||
line will place information starting at the time
|
||||
specified as the UNTIL field in the previous line in
|
||||
the file used by the previous line. Continuation
|
||||
lines may contain an UNTIL field, just as zone lines
|
||||
do, indicating that the next line is a further
|
||||
continuation.
|
||||
|
||||
A link line has the form
|
||||
|
||||
Link LINK-FROM LINK-TO
|
||||
|
||||
For example:
|
||||
|
||||
Link Europe/Istanbul Asia/Istanbul
|
||||
|
||||
The LINK-FROM field should appear as the NAME field in some
|
||||
zone line; the LINK-TO field is used as an alternate name
|
||||
for that zone.
|
||||
|
||||
Except for continuation lines, lines may appear in any order
|
||||
in the input.
|
||||
|
||||
Lines in the file that describes leap seconds have the
|
||||
following form:
|
||||
|
||||
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
||||
|
||||
For example:
|
||||
|
||||
Leap 1974 Dec 31 23:59:60 + S
|
||||
|
||||
The YEAR, MONTH, DAY, and HH:MM:SS fields tell when the leap
|
||||
second happened. The CORR field should be "+" if a second
|
||||
was added or "-" if a second was skipped. The R/S field
|
||||
should be (an abbreviation of) "Stationary" if the leap
|
||||
second time given by the other fields should be interpreted
|
||||
as UTC or (an abbreviation of) "Rolling" if the leap second
|
||||
time given by the other fields should be interpreted as
|
||||
local wall clock time.
|
||||
|
||||
NOTES
|
||||
For areas with more than two types of local time, you may
|
||||
need to use local standard time in the AT field of the
|
||||
earliest transition time's rule to ensure that the earliest
|
||||
transition time recorded in the compiled file is correct.
|
||||
|
||||
If, for a particular zone, a clock advance caused by the
|
||||
start of daylight saving coincides with and is equal to a
|
||||
clock retreat caused by a change in UTC offset, zic produces
|
||||
a single transition to daylight saving at the new UTC offset
|
||||
(without any change in wall clock time). To get separate
|
||||
transitions use multiple zone continuation lines specifying
|
||||
transition instants using universal time.
|
||||
|
||||
FILE
|
||||
/usr/local/etc/zoneinfo standard directory used for created
|
||||
files
|
||||
|
||||
SEE ALSO
|
||||
newctime(3), tzfile(5), zdump(8)
|
2316
commands/zoneinfo/zic.c
Normal file
2316
commands/zoneinfo/zic.c
Normal file
File diff suppressed because it is too large
Load diff
420
commands/zoneinfo/zone.tab
Normal file
420
commands/zoneinfo/zone.tab
Normal file
|
@ -0,0 +1,420 @@
|
|||
# @(#)zone.tab 8.10
|
||||
#
|
||||
# TZ zone descriptions
|
||||
#
|
||||
# From Paul Eggert (1996-08-05):
|
||||
#
|
||||
# This file contains a table with the following columns:
|
||||
# 1. ISO 3166 2-character country code. See the file `iso3166.tab'.
|
||||
# 2. Latitude and longitude of the zone's principal location
|
||||
# in ISO 6709 sign-degrees-minutes-seconds format,
|
||||
# either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
|
||||
# first latitude (+ is north), then longitude (+ is east).
|
||||
# 3. Zone name used in value of TZ environment variable.
|
||||
# 4. Comments; present if and only if the country has multiple rows.
|
||||
#
|
||||
# Columns are separated by a single tab.
|
||||
# The table is sorted first by country, then an order within the country that
|
||||
# (1) makes some geographical sense, and
|
||||
# (2) puts the most populous zones first, where that does not contradict (1).
|
||||
#
|
||||
# Lines beginning with `#' are comments.
|
||||
#
|
||||
#country-
|
||||
#code coordinates TZ comments
|
||||
AD +4230+00131 Europe/Andorra
|
||||
AE +2518+05518 Asia/Dubai
|
||||
AF +3431+06912 Asia/Kabul
|
||||
AG +1703-06148 America/Antigua
|
||||
AI +1812-06304 America/Anguilla
|
||||
AL +4120+01950 Europe/Tirane
|
||||
AM +4011+04430 Asia/Yerevan
|
||||
AN +1211-06900 America/Curacao
|
||||
AO -0848+01314 Africa/Luanda
|
||||
AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
|
||||
AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
|
||||
AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
|
||||
AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
|
||||
AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
|
||||
AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
|
||||
AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula
|
||||
AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole
|
||||
AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Base, Terre Adelie
|
||||
AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
|
||||
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
|
||||
AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
|
||||
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
|
||||
AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
|
||||
AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
|
||||
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
|
||||
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
|
||||
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
|
||||
AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC)
|
||||
AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF)
|
||||
AS -1416-17042 Pacific/Pago_Pago
|
||||
AT +4813+01620 Europe/Vienna
|
||||
AU -3133+15905 Australia/Lord_Howe Lord Howe Island
|
||||
AU -4253+14719 Australia/Hobart Tasmania - most locations
|
||||
AU -3956+14352 Australia/Currie Tasmania - King Island
|
||||
AU -3749+14458 Australia/Melbourne Victoria
|
||||
AU -3352+15113 Australia/Sydney New South Wales - most locations
|
||||
AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna
|
||||
AU -2728+15302 Australia/Brisbane Queensland - most locations
|
||||
AU -2016+14900 Australia/Lindeman Queensland - Holiday Islands
|
||||
AU -3455+13835 Australia/Adelaide South Australia
|
||||
AU -1228+13050 Australia/Darwin Northern Territory
|
||||
AU -3157+11551 Australia/Perth Western Australia - most locations
|
||||
AU -3143+12852 Australia/Eucla Western Australia - Eucla area
|
||||
AW +1230-06858 America/Aruba
|
||||
AX +6006+01957 Europe/Mariehamn
|
||||
AZ +4023+04951 Asia/Baku
|
||||
BA +4352+01825 Europe/Sarajevo
|
||||
BB +1306-05937 America/Barbados
|
||||
BD +2343+09025 Asia/Dhaka
|
||||
BE +5050+00420 Europe/Brussels
|
||||
BF +1222-00131 Africa/Ouagadougou
|
||||
BG +4241+02319 Europe/Sofia
|
||||
BH +2623+05035 Asia/Bahrain
|
||||
BI -0323+02922 Africa/Bujumbura
|
||||
BJ +0629+00237 Africa/Porto-Novo
|
||||
BM +3217-06446 Atlantic/Bermuda
|
||||
BN +0456+11455 Asia/Brunei
|
||||
BO -1630-06809 America/La_Paz
|
||||
BR -0351-03225 America/Noronha Atlantic islands
|
||||
BR -0127-04829 America/Belem Amapa, E Para
|
||||
BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
|
||||
BR -0803-03454 America/Recife Pernambuco
|
||||
BR -0712-04812 America/Araguaina Tocantins
|
||||
BR -0940-03543 America/Maceio Alagoas, Sergipe
|
||||
BR -1259-03831 America/Bahia Bahia
|
||||
BR -2332-04637 America/Sao_Paulo S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
|
||||
BR -2027-05437 America/Campo_Grande Mato Grosso do Sul
|
||||
BR -1535-05605 America/Cuiaba Mato Grosso
|
||||
BR -0846-06354 America/Porto_Velho W Para, Rondonia
|
||||
BR +0249-06040 America/Boa_Vista Roraima
|
||||
BR -0308-06001 America/Manaus E Amazonas
|
||||
BR -0640-06952 America/Eirunepe W Amazonas
|
||||
BR -0958-06748 America/Rio_Branco Acre
|
||||
BS +2505-07721 America/Nassau
|
||||
BT +2728+08939 Asia/Thimphu
|
||||
BW -2545+02555 Africa/Gaborone
|
||||
BY +5354+02734 Europe/Minsk
|
||||
BZ +1730-08812 America/Belize
|
||||
CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador
|
||||
CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), PEI
|
||||
CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
|
||||
CA +4606-06447 America/Moncton Atlantic Time - New Brunswick
|
||||
CA +5320-06025 America/Goose_Bay Atlantic Time - Labrador - most locations
|
||||
CA +5125-05707 America/Blanc-Sablon Atlantic Standard Time - Quebec - Lower North Shore
|
||||
CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations
|
||||
CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations
|
||||
CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
|
||||
CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
|
||||
CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
|
||||
CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
|
||||
CA +744144-0944945 America/Resolute Eastern Time - Resolute, Nunavut
|
||||
CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
|
||||
CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut
|
||||
CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
|
||||
CA +4843-09434 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario
|
||||
CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut
|
||||
CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations
|
||||
CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest
|
||||
CA +5333-11328 America/Edmonton Mountain Time - Alberta, east British Columbia & west Saskatchewan
|
||||
CA +6227-11421 America/Yellowknife Mountain Time - central Northwest Territories
|
||||
CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories
|
||||
CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
|
||||
CA +4916-12307 America/Vancouver Pacific Time - west British Columbia
|
||||
CA +6043-13503 America/Whitehorse Pacific Time - south Yukon
|
||||
CA +6404-13925 America/Dawson Pacific Time - north Yukon
|
||||
CC -1210+09655 Indian/Cocos
|
||||
CD -0418+01518 Africa/Kinshasa west Dem. Rep. of Congo
|
||||
CD -1140+02728 Africa/Lubumbashi east Dem. Rep. of Congo
|
||||
CF +0422+01835 Africa/Bangui
|
||||
CG -0416+01517 Africa/Brazzaville
|
||||
CH +4723+00832 Europe/Zurich
|
||||
CI +0519-00402 Africa/Abidjan
|
||||
CK -2114-15946 Pacific/Rarotonga
|
||||
CL -3327-07040 America/Santiago most locations
|
||||
CL -2709-10926 Pacific/Easter Easter Island & Sala y Gomez
|
||||
CM +0403+00942 Africa/Douala
|
||||
CN +3114+12128 Asia/Shanghai east China - Beijing, Guangdong, Shanghai, etc.
|
||||
CN +4545+12641 Asia/Harbin Heilongjiang (except Mohe), Jilin
|
||||
CN +2934+10635 Asia/Chongqing central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
|
||||
CN +4348+08735 Asia/Urumqi most of Tibet & Xinjiang
|
||||
CN +3929+07559 Asia/Kashgar west Tibet & Xinjiang
|
||||
CO +0436-07405 America/Bogota
|
||||
CR +0956-08405 America/Costa_Rica
|
||||
CU +2308-08222 America/Havana
|
||||
CV +1455-02331 Atlantic/Cape_Verde
|
||||
CX -1025+10543 Indian/Christmas
|
||||
CY +3510+03322 Asia/Nicosia
|
||||
CZ +5005+01426 Europe/Prague
|
||||
DE +5230+01322 Europe/Berlin
|
||||
DJ +1136+04309 Africa/Djibouti
|
||||
DK +5540+01235 Europe/Copenhagen
|
||||
DM +1518-06124 America/Dominica
|
||||
DO +1828-06954 America/Santo_Domingo
|
||||
DZ +3647+00303 Africa/Algiers
|
||||
EC -0210-07950 America/Guayaquil mainland
|
||||
EC -0054-08936 Pacific/Galapagos Galapagos Islands
|
||||
EE +5925+02445 Europe/Tallinn
|
||||
EG +3003+03115 Africa/Cairo
|
||||
EH +2709-01312 Africa/El_Aaiun
|
||||
ER +1520+03853 Africa/Asmara
|
||||
ES +4024-00341 Europe/Madrid mainland
|
||||
ES +3553-00519 Africa/Ceuta Ceuta & Melilla
|
||||
ES +2806-01524 Atlantic/Canary Canary Islands
|
||||
ET +0902+03842 Africa/Addis_Ababa
|
||||
FI +6010+02458 Europe/Helsinki
|
||||
FJ -1808+17825 Pacific/Fiji
|
||||
FK -5142-05751 Atlantic/Stanley
|
||||
FM +0725+15147 Pacific/Truk Truk (Chuuk) and Yap
|
||||
FM +0658+15813 Pacific/Ponape Ponape (Pohnpei)
|
||||
FM +0519+16259 Pacific/Kosrae Kosrae
|
||||
FO +6201-00646 Atlantic/Faroe
|
||||
FR +4852+00220 Europe/Paris
|
||||
GA +0023+00927 Africa/Libreville
|
||||
GB +512830-0001845 Europe/London
|
||||
GD +1203-06145 America/Grenada
|
||||
GE +4143+04449 Asia/Tbilisi
|
||||
GF +0456-05220 America/Cayenne
|
||||
GG +4927-00232 Europe/Guernsey
|
||||
GH +0533-00013 Africa/Accra
|
||||
GI +3608-00521 Europe/Gibraltar
|
||||
GL +6411-05144 America/Godthab most locations
|
||||
GL +7646-01840 America/Danmarkshavn east coast, north of Scoresbysund
|
||||
GL +7029-02158 America/Scoresbysund Scoresbysund / Ittoqqortoormiit
|
||||
GL +7634-06847 America/Thule Thule / Pituffik
|
||||
GM +1328-01639 Africa/Banjul
|
||||
GN +0931-01343 Africa/Conakry
|
||||
GP +1614-06132 America/Guadeloupe
|
||||
GQ +0345+00847 Africa/Malabo
|
||||
GR +3758+02343 Europe/Athens
|
||||
GS -5416-03632 Atlantic/South_Georgia
|
||||
GT +1438-09031 America/Guatemala
|
||||
GU +1328+14445 Pacific/Guam
|
||||
GW +1151-01535 Africa/Bissau
|
||||
GY +0648-05810 America/Guyana
|
||||
HK +2217+11409 Asia/Hong_Kong
|
||||
HN +1406-08713 America/Tegucigalpa
|
||||
HR +4548+01558 Europe/Zagreb
|
||||
HT +1832-07220 America/Port-au-Prince
|
||||
HU +4730+01905 Europe/Budapest
|
||||
ID -0610+10648 Asia/Jakarta Java & Sumatra
|
||||
ID -0002+10920 Asia/Pontianak west & central Borneo
|
||||
ID -0507+11924 Asia/Makassar east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
|
||||
ID -0232+14042 Asia/Jayapura Irian Jaya & the Moluccas
|
||||
IE +5320-00615 Europe/Dublin
|
||||
IL +3146+03514 Asia/Jerusalem
|
||||
IM +5409-00428 Europe/Isle_of_Man
|
||||
IN +2232+08822 Asia/Calcutta
|
||||
IO -0720+07225 Indian/Chagos
|
||||
IQ +3321+04425 Asia/Baghdad
|
||||
IR +3540+05126 Asia/Tehran
|
||||
IS +6409-02151 Atlantic/Reykjavik
|
||||
IT +4154+01229 Europe/Rome
|
||||
JE +4912-00207 Europe/Jersey
|
||||
JM +1800-07648 America/Jamaica
|
||||
JO +3157+03556 Asia/Amman
|
||||
JP +353916+1394441 Asia/Tokyo
|
||||
KE -0117+03649 Africa/Nairobi
|
||||
KG +4254+07436 Asia/Bishkek
|
||||
KH +1133+10455 Asia/Phnom_Penh
|
||||
KI +0125+17300 Pacific/Tarawa Gilbert Islands
|
||||
KI -0308-17105 Pacific/Enderbury Phoenix Islands
|
||||
KI +0152-15720 Pacific/Kiritimati Line Islands
|
||||
KM -1141+04316 Indian/Comoro
|
||||
KN +1718-06243 America/St_Kitts
|
||||
KP +3901+12545 Asia/Pyongyang
|
||||
KR +3733+12658 Asia/Seoul
|
||||
KW +2920+04759 Asia/Kuwait
|
||||
KY +1918-08123 America/Cayman
|
||||
KZ +4315+07657 Asia/Almaty most locations
|
||||
KZ +4448+06528 Asia/Qyzylorda Qyzylorda (Kyzylorda, Kzyl-Orda)
|
||||
KZ +5017+05710 Asia/Aqtobe Aqtobe (Aktobe)
|
||||
KZ +4431+05016 Asia/Aqtau Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
|
||||
KZ +5113+05121 Asia/Oral West Kazakhstan
|
||||
LA +1758+10236 Asia/Vientiane
|
||||
LB +3353+03530 Asia/Beirut
|
||||
LC +1401-06100 America/St_Lucia
|
||||
LI +4709+00931 Europe/Vaduz
|
||||
LK +0656+07951 Asia/Colombo
|
||||
LR +0618-01047 Africa/Monrovia
|
||||
LS -2928+02730 Africa/Maseru
|
||||
LT +5441+02519 Europe/Vilnius
|
||||
LU +4936+00609 Europe/Luxembourg
|
||||
LV +5657+02406 Europe/Riga
|
||||
LY +3254+01311 Africa/Tripoli
|
||||
MA +3339-00735 Africa/Casablanca
|
||||
MC +4342+00723 Europe/Monaco
|
||||
MD +4700+02850 Europe/Chisinau
|
||||
ME +4226+01916 Europe/Podgorica
|
||||
MG -1855+04731 Indian/Antananarivo
|
||||
MH +0709+17112 Pacific/Majuro most locations
|
||||
MH +0905+16720 Pacific/Kwajalein Kwajalein
|
||||
MK +4159+02126 Europe/Skopje
|
||||
ML +1239-00800 Africa/Bamako
|
||||
MM +1647+09610 Asia/Rangoon
|
||||
MN +4755+10653 Asia/Ulaanbaatar most locations
|
||||
MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
|
||||
MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
|
||||
MO +2214+11335 Asia/Macau
|
||||
MP +1512+14545 Pacific/Saipan
|
||||
MQ +1436-06105 America/Martinique
|
||||
MR +1806-01557 Africa/Nouakchott
|
||||
MS +1643-06213 America/Montserrat
|
||||
MT +3554+01431 Europe/Malta
|
||||
MU -2010+05730 Indian/Mauritius
|
||||
MV +0410+07330 Indian/Maldives
|
||||
MW -1547+03500 Africa/Blantyre
|
||||
MX +1924-09909 America/Mexico_City Central Time - most locations
|
||||
MX +2105-08646 America/Cancun Central Time - Quintana Roo
|
||||
MX +2058-08937 America/Merida Central Time - Campeche, Yucatan
|
||||
MX +2540-10019 America/Monterrey Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
|
||||
MX +2313-10625 America/Mazatlan Mountain Time - S Baja, Nayarit, Sinaloa
|
||||
MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua
|
||||
MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora
|
||||
MX +3232-11701 America/Tijuana Pacific Time
|
||||
MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia
|
||||
MY +0133+11020 Asia/Kuching Sabah & Sarawak
|
||||
MZ -2558+03235 Africa/Maputo
|
||||
NA -2234+01706 Africa/Windhoek
|
||||
NC -2216+16530 Pacific/Noumea
|
||||
NE +1331+00207 Africa/Niamey
|
||||
NF -2903+16758 Pacific/Norfolk
|
||||
NG +0627+00324 Africa/Lagos
|
||||
NI +1209-08617 America/Managua
|
||||
NL +5222+00454 Europe/Amsterdam
|
||||
NO +5955+01045 Europe/Oslo
|
||||
NP +2743+08519 Asia/Katmandu
|
||||
NR -0031+16655 Pacific/Nauru
|
||||
NU -1901+16955 Pacific/Niue
|
||||
NZ -3652+17446 Pacific/Auckland most locations
|
||||
NZ -4357-17633 Pacific/Chatham Chatham Islands
|
||||
OM +2336+05835 Asia/Muscat
|
||||
PA +0858-07932 America/Panama
|
||||
PE -1203-07703 America/Lima
|
||||
PF -1732-14934 Pacific/Tahiti Society Islands
|
||||
PF -0900-13930 Pacific/Marquesas Marquesas Islands
|
||||
PF -2308-13457 Pacific/Gambier Gambier Islands
|
||||
PG -0930+14710 Pacific/Port_Moresby
|
||||
PH +1435+12100 Asia/Manila
|
||||
PK +2452+06703 Asia/Karachi
|
||||
PL +5215+02100 Europe/Warsaw
|
||||
PM +4703-05620 America/Miquelon
|
||||
PN -2504-13005 Pacific/Pitcairn
|
||||
PR +182806-0660622 America/Puerto_Rico
|
||||
PS +3130+03428 Asia/Gaza
|
||||
PT +3843-00908 Europe/Lisbon mainland
|
||||
PT +3238-01654 Atlantic/Madeira Madeira Islands
|
||||
PT +3744-02540 Atlantic/Azores Azores
|
||||
PW +0720+13429 Pacific/Palau
|
||||
PY -2516-05740 America/Asuncion
|
||||
QA +2517+05132 Asia/Qatar
|
||||
RE -2052+05528 Indian/Reunion
|
||||
RO +4426+02606 Europe/Bucharest
|
||||
RS +4450+02030 Europe/Belgrade
|
||||
RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
|
||||
RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
|
||||
RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
|
||||
RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia
|
||||
RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
|
||||
RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
|
||||
RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
|
||||
RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River
|
||||
RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal
|
||||
RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River
|
||||
RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
|
||||
RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island
|
||||
RU +5934+15048 Asia/Magadan Moscow+08 - Magadan
|
||||
RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka
|
||||
RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea
|
||||
RW -0157+03004 Africa/Kigali
|
||||
SA +2438+04643 Asia/Riyadh
|
||||
SB -0932+16012 Pacific/Guadalcanal
|
||||
SC -0440+05528 Indian/Mahe
|
||||
SD +1536+03232 Africa/Khartoum
|
||||
SE +5920+01803 Europe/Stockholm
|
||||
SG +0117+10351 Asia/Singapore
|
||||
SH -1555-00542 Atlantic/St_Helena
|
||||
SI +4603+01431 Europe/Ljubljana
|
||||
SJ +7800+01600 Arctic/Longyearbyen Svalbard
|
||||
SJ +7059-00805 Atlantic/Jan_Mayen Jan Mayen
|
||||
SK +4809+01707 Europe/Bratislava
|
||||
SL +0830-01315 Africa/Freetown
|
||||
SM +4355+01228 Europe/San_Marino
|
||||
SN +1440-01726 Africa/Dakar
|
||||
SO +0204+04522 Africa/Mogadishu
|
||||
SR +0550-05510 America/Paramaribo
|
||||
ST +0020+00644 Africa/Sao_Tome
|
||||
SV +1342-08912 America/El_Salvador
|
||||
SY +3330+03618 Asia/Damascus
|
||||
SZ -2618+03106 Africa/Mbabane
|
||||
TC +2128-07108 America/Grand_Turk
|
||||
TD +1207+01503 Africa/Ndjamena
|
||||
TF -492110+0701303 Indian/Kerguelen
|
||||
TG +0608+00113 Africa/Lome
|
||||
TH +1345+10031 Asia/Bangkok
|
||||
TJ +3835+06848 Asia/Dushanbe
|
||||
TK -0922-17114 Pacific/Fakaofo
|
||||
TL -0833+12535 Asia/Dili
|
||||
TM +3757+05823 Asia/Ashgabat
|
||||
TN +3648+01011 Africa/Tunis
|
||||
TO -2110+17510 Pacific/Tongatapu
|
||||
TR +4101+02858 Europe/Istanbul
|
||||
TT +1039-06131 America/Port_of_Spain
|
||||
TV -0831+17913 Pacific/Funafuti
|
||||
TW +2503+12130 Asia/Taipei
|
||||
TZ -0648+03917 Africa/Dar_es_Salaam
|
||||
UA +5026+03031 Europe/Kiev most locations
|
||||
UA +4837+02218 Europe/Uzhgorod Ruthenia
|
||||
UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk
|
||||
UA +4457+03406 Europe/Simferopol central Crimea
|
||||
UG +0019+03225 Africa/Kampala
|
||||
UM +1700-16830 Pacific/Johnston Johnston Atoll
|
||||
UM +2813-17722 Pacific/Midway Midway Islands
|
||||
UM +1917+16637 Pacific/Wake Wake Island
|
||||
US +404251-0740023 America/New_York Eastern Time
|
||||
US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
|
||||
US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisville area
|
||||
US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County
|
||||
US +394606-0860929 America/Indiana/Indianapolis Eastern Time - Indiana - most locations
|
||||
US +411745-0863730 America/Indiana/Knox Eastern Time - Indiana - Starke County
|
||||
US +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
|
||||
US +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
|
||||
US +384452-0850402 America/Indiana/Vevay Eastern Time - Indiana - Switzerland County
|
||||
US +415100-0873900 America/Chicago Central Time
|
||||
US +384038-0873143 America/Indiana/Vincennes Central Time - Indiana - Daviess, Dubois, Knox, Martin & Perry Counties
|
||||
US +382931-0871643 America/Indiana/Petersburg Central Time - Indiana - Pike County
|
||||
US +450628-0873651 America/Menominee Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
|
||||
US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County
|
||||
US +465042-1012439 America/North_Dakota/New_Salem Central Time - North Dakota - Morton County (except Mandan area)
|
||||
US +394421-1045903 America/Denver Mountain Time
|
||||
US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon
|
||||
US +364708-1084111 America/Shiprock Mountain Time - Navajo
|
||||
US +332654-1120424 America/Phoenix Mountain Standard Time - Arizona
|
||||
US +340308-1181434 America/Los_Angeles Pacific Time
|
||||
US +611305-1495401 America/Anchorage Alaska Time
|
||||
US +581807-1342511 America/Juneau Alaska Time - Alaska panhandle
|
||||
US +593249-1394338 America/Yakutat Alaska Time - Alaska panhandle neck
|
||||
US +643004-1652423 America/Nome Alaska Time - west Alaska
|
||||
US +515248-1763929 America/Adak Aleutian Islands
|
||||
US +211825-1575130 Pacific/Honolulu Hawaii
|
||||
UY -3453-05611 America/Montevideo
|
||||
UZ +3940+06648 Asia/Samarkand west Uzbekistan
|
||||
UZ +4120+06918 Asia/Tashkent east Uzbekistan
|
||||
VA +4154+01227 Europe/Vatican
|
||||
VC +1309-06114 America/St_Vincent
|
||||
VE +1030-06656 America/Caracas
|
||||
VG +1827-06437 America/Tortola
|
||||
VI +1821-06456 America/St_Thomas
|
||||
VN +1045+10640 Asia/Saigon
|
||||
VU -1740+16825 Pacific/Efate
|
||||
WF -1318-17610 Pacific/Wallis
|
||||
WS -1350-17144 Pacific/Apia
|
||||
YE +1245+04512 Asia/Aden
|
||||
YT -1247+04514 Indian/Mayotte
|
||||
ZA -2615+02800 Africa/Johannesburg
|
||||
ZM -1525+02817 Africa/Lusaka
|
||||
ZW -1750+03103 Africa/Harare
|
Loading…
Reference in a new issue