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