xref: /freebsd/contrib/tzcode/zic.8 (revision f374ba41f55c1a127303d92d830dd58eef2f5243)
1.\" This file is in the public domain, so clarified as of
2.\" 2009-05-17 by Arthur David Olson.
3.\"
4.\" $FreeBSD$
5.\"
6.Dd January 21, 2023
7.Dt ZIC 8
8.Os
9.Sh NAME
10.Nm zic
11.Nd timezone compiler
12.Sh SYNOPSIS
13.Nm
14.Op Fl -help
15.Op Fl -version
16.Op Fl Dsv
17.Op Fl b Ar slim | fat
18.Op Fl d Ar directory
19.Op Fl g Ar gid
20.Op Fl l Ar localtime
21.Op Fl L Ar leapseconds
22.Op Fl m Ar mode
23.Op Fl p Ar posixrules
24.Oo
25.Fl r
26.Op @ Ns Ar lo Ns
27.Op /@ Ns Ar hi
28.Oc
29.Op Fl R @ Ns Ar hi
30.Op Fl t Ar localtime-link
31.Op Fl u Ar uid
32.Op Ar filename ...
33.Sh DESCRIPTION
34The
35.Nm
36program reads text from the file(s) named on the command line
37and creates the timezone information format (TZif) files
38specified in this input.
39If a
40.Ar filename
41is
42.Dq "-" ,
43standard input is read.
44.Pp
45The following options are available:
46.Bl -tag -width indent
47.It Fl -version
48Output version information and exit.
49.It Fl -help
50Output short usage message and exit.
51.It Fl b Ar bloat
52Output backward-compatibility data as specified by
53.Ar bloat .
54If
55.Ar bloat
56is
57.Cm fat ,
58generate additional data entries that work around potential bugs or
59incompatibilities in older software, such as software that mishandles
60the 64-bit generated data.
61If
62.Ar bloat
63is
64.Cm slim ,
65keep the output files small; this can help check for the bugs
66and incompatibilities.
67The default is
68.Cm slim ,
69as software that mishandles 64-bit data typically
70mishandles timestamps after the year 2038 anyway.
71Also see the
72.Fl r
73option for another way to alter output size.
74.It Fl D
75Do not create directories.
76.It Fl d Ar directory
77Create time conversion information files in the named directory rather than
78in the standard directory named below.
79.It Fl l Ar timezone
80Use
81.Ar timezone
82as local time.
83The
84.Nm
85utility
86will act as if the input contained a link line of the form
87.Bd -literal -offset indent
88Link	timezone		localtime
89.Ed
90.Pp
91If
92.Ar timezone
93is
94.Ql - ,
95any already-existing link is removed.
96.It Fl L Ar filename
97Read leap second information from the file with the given name.
98If this option is not used,
99no leap second information appears in output files.
100.It Fl p Ar timezone
101Use
102.Ar timezone 's
103rules when handling nonstandard
104TZ strings like
105.Dq "EET\-2EEST"
106that lack transition rules.
107The
108.Nm
109utility
110will act as if the input contained a link line of the form
111.Bd -literal -offset indent
112Link	\fItimezone\fP		posixrules
113.Ed
114.Pp
115This feature is obsolete and poorly supported.
116Among other things it should not be used for timestamps after the year 2037,
117and it should not be combined with
118.Fl b Cm slim
119if
120.Ar timezone 's
121transitions are at standard time or Universal Time (UT) instead of local time.
122.Pp
123If
124.Ar timezone
125is
126.Ql - ,
127any already-existing link is removed.
128.It Fl r Oo @ Ns Ar lo Oc Ns Oo /@ Ns Ar hi Oc
129Limit the applicability of output files
130to timestamps in the range from
131.Ar lo
132(inclusive) to
133.Ar hi
134(exclusive), where
135.Ar lo
136and
137.Ar hi
138are possibly-signed decimal counts of seconds since the Epoch
139(1970-01-01 00:00:00 UTC).
140Omitted counts default to extreme values.
141The output files use UT offset 0 and abbreviation
142.Dq "\-00"
143in place of the omitted timestamp data.
144For example,
145.Fl r @0
146omits data intended for negative timestamps (i.e., before the Epoch), and
147.Fl r @0/@2147483648
148outputs data intended only for nonnegative timestamps that fit into
14931-bit signed integers.
150Although this option typically reduces the output file's size,
151the size can increase due to the need to represent the timestamp range
152boundaries, particularly if
153.Ar hi
154causes a TZif file to contain explicit entries for
155.Em pre-
156.Ar hi
157transitions rather than concisely representing them
158with an extended POSIX TZ string.
159Also see the
160.Fl b Cm slim
161option for another way to shrink output size.
162.It Fl R @ Ns Ar hi
163Generate redundant trailing explicit transitions for timestamps
164that occur less than
165.Ar hi
166seconds since the Epoch, even though the transitions could be
167more concisely represented via the extended POSIX TZ string.
168This option does not affect the represented timestamps.
169Although it accommodates nonstandard TZif readers
170that ignore the extended POSIX TZ string,
171it increases the size of the altered output files.
172.It Fl t Ar file
173When creating local time information, put the configuration link in
174the named file rather than in the standard location.
175.It Fl v
176Be more verbose, and complain about the following situations:
177.Bl -bullet
178.It
179The input specifies a link to a link,
180something not supported by some older parsers, including
181.Nm
182itself through release 2022e.
183.It
184A year that appears in a data file is outside the range
185of representable years.
186.It
187A time of 24:00 or more appears in the input.
188Pre-1998 versions of
189.Nm
190prohibit 24:00, and pre-2007 versions prohibit times greater than 24:00.
191.It
192A rule goes past the start or end of the month.
193Pre-2004 versions of
194.Nm
195prohibit this.
196.It
197A time zone abbreviation uses a
198.Ql %z
199format.
200Pre-2015 versions of
201.Nm
202do not support this.
203.It
204A timestamp contains fractional seconds.
205Pre-2018 versions of
206.Nm
207do not support this.
208.It
209The input contains abbreviations that are mishandled by pre-2018 versions of
210.Nm
211due to a longstanding coding bug.
212These abbreviations include
213.Dq L
214for
215.Dq Link ,
216.Dq mi
217for
218.Dq min ,
219.Dq Sa
220for
221.Dq Sat ,
222and
223.Dq Su
224for
225.Dq Sun .
226.It
227The output file does not contain all the information about the
228long-term future of a timezone, because the future cannot be summarized as
229an extended POSIX TZ string.
230For example, as of 2019 this problem
231occurs for Iran's daylight-saving rules for the predicted future, as
232these rules are based on the Iranian calendar, which cannot be
233represented.
234.It
235The output contains data that may not be handled properly by client
236code designed for older
237.Nm
238output formats.
239These compatibility issues affect only timestamps
240before 1970 or after the start of 2038.
241.It
242The output contains a truncated leap second table,
243which can cause some older TZif readers to misbehave.
244This can occur if the
245.Fl L
246option is used, and either an Expires line is present or
247the
248.Fl r
249option is also used.
250.It
251The output file contains more than 1200 transitions,
252which may be mishandled by some clients.
253The current reference client supports at most 2000 transitions;
254pre-2014 versions of the reference client support at most 1200
255transitions.
256.It
257A time zone abbreviation has fewer than 3 or more than 6 characters.
258POSIX requires at least 3, and requires implementations to support
259at least 6.
260.It
261An output file name contains a byte that is not an ASCII letter,
262.Dq "\-" ,
263.Dq "/" ,
264or
265.Dq "_" ;
266or it contains a file name component that contains more than 14 bytes
267or that starts with
268.Dq "\-" .
269.El
270.El
271.RE
272.Sh FILES
273Input files use the format described in this section; output files use
274.Xr tzfile 5
275format.
276.Pp
277Input files should be text files, that is, they should be a series of
278zero or more lines, each ending in a newline byte and containing at
279most 2048 bytes counting the newline, and without any NUL bytes.
280The input text's encoding
281is typically UTF-8 or ASCII; it should have a unibyte representation
282for the POSIX Portable Character Set (PPCS)
283\*<https://pubs\*:.opengroup\*:.org/\*:onlinepubs/\*:9699919799/\*:basedefs/\*:V1_chap06\*:.html\*>
284and the encoding's non-unibyte characters should consist entirely of
285non-PPCS bytes.
286Non-PPCS characters typically occur only in comments:
287although output file names and time zone abbreviations can contain
288nearly any character, other software will work better if these are
289limited to the restricted syntax described under the
290.Fl v
291option.
292.Pp
293Input lines are made up of fields.
294Fields are separated from one another by one or more white space characters.
295The white space characters are space, form feed, carriage return, newline,
296tab, and vertical tab.
297Leading and trailing white space on input lines is ignored.
298An unquoted sharp character (\(sh) in the input introduces a comment which extends
299to the end of the line the sharp character appears on.
300White space characters and sharp characters may be enclosed in double quotes
301(\(dq) if they're to be used as part of a field.
302Any line that is blank (after comment stripping) is ignored.
303Nonblank lines are expected to be of one of three types:
304rule lines, zone lines, and link lines.
305.Pp
306Names must be in English and are case insensitive.
307They appear in several contexts, and include month and weekday names
308and keywords such as
309.Dq "maximum" ,
310.Dq "only" ,
311.Dq "Rolling" ,
312and
313.Dq "Zone" .
314A name can be abbreviated by omitting all but an initial prefix; any
315abbreviation must be unambiguous in context.
316.Pp
317A rule line has the form
318.Bd -literal -offset indent
319Rule	NAME	FROM	TO	\-	IN	ON	AT	SAVE	LETTER/S
320.Ed
321.Pp
322For example:
323.Bd -literal -offset indent
324Rule	US	1967	1973	\-	Apr	lastSun	2:00w	1:00d	D
325.Ed
326.Pp
327The fields that make up a rule line are:
328.Bl -tag -width "LETTER/S"
329.It NAME
330Gives the name of the rule set that contains this line.
331The name must start with a character that is neither
332an ASCII digit nor
333.Dq \-
334nor
335.Dq + .
336To allow for future extensions,
337an unquoted name should not contain characters from the set
338.Dq Ql "!$%&'()*,/:;<=>?@[\]^`{|}~" .
339.It FROM
340Gives the first year in which the rule applies.
341Any signed integer year can be supplied; the proleptic Gregorian calendar
342is assumed, with year 0 preceding year 1.
343The word
344.Cm minimum
345(or an abbreviation) means the indefinite past.
346The word
347.Cm maximum
348(or an abbreviation) means the indefinite future.
349Rules can describe times that are not representable as time values,
350with the unrepresentable times ignored; this allows rules to be portable
351among hosts with differing time value types.
352.It TO
353Gives the final year in which the rule applies.
354In addition to
355.Cm minimum
356and
357.Cm maximum
358(as above),
359the word
360.Cm only
361(or an abbreviation)
362may be used to repeat the value of the
363.Ar FROM
364field.
365.It \-
366Is a reserved field and should always contain
367.Ql \-
368for compatibility with older versions of
369.Nm .
370It was previously known as the
371.Ar TYPE
372field, which could contain values to allow a
373separate script to further restrict in which
374.Dq types
375of years the rule would apply.
376.It IN
377Names the month in which the rule takes effect.
378Month names may be abbreviated.
379.It ON
380Gives the day on which the rule takes effect.
381Recognized forms include:
382.Bl -tag -compact -width "Sun<=25"
383.It 5
384the fifth of the month
385.It lastSun
386the last Sunday in the month
387.It lastMon
388the last Monday in the month
389.It Sun>=8
390first Sunday on or after the eighth
391.It Sun<=25
392last Sunday on or before the 25th
393.El
394.Pp
395A weekday name (e.g.,
396.Ql "Sunday" )
397or a weekday name preceded by
398.Dq "last"
399(e.g.,
400.Ql "lastSunday" )
401may be abbreviated or spelled out in full.
402There must be no white space characters within the
403.Ar ON
404field.
405The
406.Dq <=
407and
408.Dq >=
409constructs can result in a day in the neighboring month;
410for example, the IN-ON combination
411.Dq "Oct Sun>=31"
412stands for the first Sunday on or after October 31,
413even if that Sunday occurs in November.
414.It AT
415Gives the time of day at which the rule takes effect,
416relative to 00:00, the start of a calendar day.
417Recognized forms include:
418.Bl -tag -compact -width "00:19:32.13"
419.It 2
420time in hours
421.It 2:00
422time in hours and minutes
423.It 01:28:14
424time in hours, minutes, and seconds
425.It 00:19:32.13
426time with fractional seconds
427.It 12:00
428midday, 12 hours after 00:00
429.It 15:00
4303 PM, 15 hours after 00:00
431.It 24:00
432end of day, 24 hours after 00:00
433.It 260:00
434260 hours after 00:00
435.It \-2:30
4362.5 hours before 00:00
437.It \-
438equivalent to 0
439.El
440.Pp
441Although
442.Nm
443rounds times to the nearest integer second
444(breaking ties to the even integer), the fractions may be useful
445to other applications requiring greater precision.
446The source format does not specify any maximum precision.
447Any of these forms may be followed by the letter
448.Ql w
449if the given time is local or
450.Dq "wall clock"
451time,
452.Ql s
453if the given time is standard time without any adjustment for daylight saving,
454or
455.Ql u
456(or
457.Ql g
458or
459.Ql z )
460if the given time is universal time;
461in the absence of an indicator,
462local (wall clock) time is assumed.
463These forms ignore leap seconds; for example,
464if a leap second occurs at 00:59:60 local time,
465.Ql "1:00"
466stands for 3601 seconds after local midnight instead of the usual 3600 seconds.
467The intent is that a rule line describes the instants when a
468clock/calendar set to the type of time specified in the
469.Ar AT
470field would show the specified date and time of day.
471.It SAVE
472Gives the amount of time to be added to local standard time when the rule is in
473effect, and whether the resulting time is standard or daylight saving.
474This field has the same format as the
475.Ar AT
476field
477except with a different set of suffix letters:
478.Ql s
479for standard time and
480.Ql d
481for daylight saving time.
482The suffix letter is typically omitted, and defaults to
483.Ql s
484if the offset is zero and to
485.Ql d
486otherwise.
487Negative offsets are allowed; in Ireland, for example, daylight saving
488time is observed in winter and has a negative offset relative to
489Irish Standard Time.
490The offset is merely added to standard time; for example,
491.Nm
492does not distinguish a 10:30 standard time plus an 0:30
493.Ar SAVE
494from a 10:00 standard time plus a 1:00
495.Ar SAVE .
496.It LETTER/S
497Gives the
498.Dq "variable part"
499(for example, the
500.Dq "S"
501or
502.Dq "D"
503in
504.Dq "EST"
505or
506.Dq "EDT" )
507of time zone abbreviations to be used when this rule is in effect.
508If this field is
509.Ql \- ,
510the variable part is null.
511.El
512.Pp
513A zone line has the form
514.Bd -literal -offset indent
515Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]
516.Ed
517.Pp
518For example:
519.Bd -literal -offset indent
520Zone	Asia/Amman	2:00	Jordan	EE%sT	2017 Oct 27 01:00
521.Ed
522.Pp
523The fields that make up a zone line are:
524.Bl -tag -width "STDOFF"
525.It NAME
526The name of the timezone.
527This is the name used in creating the time conversion information file for the
528timezone.
529It should not contain a file name component
530.Dq ".\&"
531or
532.Dq ".." ;
533a file name component is a maximal substring that does not contain
534.Dq "/" .
535.It STDOFF
536The amount of time to add to UT to get standard time,
537without any adjustment for daylight saving.
538This field has the same format as the
539.Ar AT
540and
541.Ar SAVE
542fields of rule lines, except without suffix letters;
543begin the field with a minus sign if time must be subtracted from UT.
544.It RULES
545The name of the rules that apply in the timezone or,
546alternatively, a field in the same format as a rule-line SAVE column,
547giving the amount of time to be added to local standard time
548and whether the resulting time is standard or daylight saving.
549If this field is
550.Ql \-
551then standard time always applies.
552When an amount of time is given, only the sum of standard time and
553this amount matters.
554.It FORMAT
555The format for time zone abbreviations.
556The pair of characters
557.Ql %s
558is used to show where the
559.Dq "variable part"
560of the time zone abbreviation goes.
561Alternatively, a format can use the pair of characters
562.Ql %z
563to stand for the UT offset in the form
564.Ar \(+- hh ,
565.Ar \(+- hhmm ,
566or
567.Ar \(+- hhmmss ,
568using the shortest form that does not lose information, where
569.Ar hh ,
570.Ar mm ,
571and
572.Ar ss
573are the hours, minutes, and seconds east (+) or west (\-) of UT.
574Alternatively,
575a slash (/)
576separates standard and daylight abbreviations.
577To conform to POSIX, a time zone abbreviation should contain only
578alphanumeric ASCII characters,
579.Ql "+"
580and
581.Ql "\-".
582By convention, the time zone abbreviation
583.Ql "\-00"
584is a placeholder that means local time is unspecified.
585.It UNTIL
586The time at which the UT offset or the rule(s) change for a location.
587It takes the form of one to four fields
588.Ar YEAR Op Ar MONTH Op Ar DAY Op Ar TIME .
589If this is specified,
590the time zone information is generated from the given UT offset
591and rule change until the time specified, which is interpreted using
592the rules in effect just before the transition.
593The month, day, and time of day have the same format as the
594.Ar IN ,
595.Ar ON ,
596and
597.Ar AT
598fields of a rule; trailing fields can be omitted, and default to the
599earliest possible value for the missing fields.
600.IP
601The next line must be a
602.Dq "continuation"
603line; this has the same form as a zone line except that the
604string
605.Dq "Zone"
606and the name are omitted, as the continuation line will
607place information starting at the time specified as the
608.Dq "until"
609information in the previous line in the file used by the previous line.
610Continuation lines may contain
611.Dq "until"
612information, just as zone lines do, indicating that the next line is a further
613continuation.
614.El
615.Pp
616If a zone changes at the same instant that a rule would otherwise take
617effect in the earlier zone or continuation line, the rule is ignored.
618A zone or continuation line
619.Ar L
620with a named rule set starts with standard time by default:
621that is, any of
622.Ar L 's
623timestamps preceding
624.Ar L 's
625earliest rule use the rule in effect after
626.Ar L 's
627first transition into standard time.
628In a single zone it is an error if two rules take effect at the same
629instant, or if two zone changes take effect at the same instant.
630.Pp
631If a continuation line subtracts
632.Ar N
633seconds from the UT offset after a transition that would be
634interpreted to be later if using the continuation line's UT offset and
635rules, the
636.Dq "until"
637time of the previous zone or continuation line is interpreted
638according to the continuation line's UT offset and rules, and any rule
639that would otherwise take effect in the next
640.Ar N
641seconds is instead assumed to take effect simultaneously.
642For example:
643.Bd -literal -offset indent
644# Rule	NAME	FROM	TO	\*-	IN	ON	AT	SAVE	LETTER/S
645Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
646Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
647
648# Zone\0\0NAME	STDOFF	RULES	FORMAT	[UNTIL]
649Zone\0\0America/Menominee	\*-5:00	\*-	EST	1973 Apr 29 2:00
650	\*-6:00	US	C%sT
651.Ed
652Here, an incorrect reading would be there were two clock changes on 1973-04-29,
653the first from 02:00 EST (\-05) to 01:00 CST (\-06),
654and the second an hour later from 02:00 CST (\-06) to 03:00 CDT (\-05).
655However,
656.Nm
657interprets this more sensibly as a single transition from 02:00 CST (\-05) to
65802:00 CDT (\-05).
659.Pp
660A link line has the form
661.Bd -literal -offset indent
662Link	TARGET	LINK-NAME
663.Ed
664.Pp
665For example:
666.Bd -literal -offset indent
667Link	Europe/Istanbul	Asia/Istanbul
668.Ed
669.Pp
670The
671.Ar TARGET
672field should appear as the
673.Ar NAME
674field in some zone line or as the
675.Ar LINK-NAME
676field in some link line.
677The
678.Ar LINK-NAME
679field is used as an alternative name for that zone;
680it has the same syntax as a zone line's
681.Ar NAME
682field.
683Links can chain together, although the behavior is unspecified if a
684chain of one or more links does not terminate in a Zone name.
685A link line can appear before the line that defines the link target.
686For example:
687.Bd -literal -offset indent
688Link	Greenwich	G_M_T
689Link	Etc/GMT	Greenwich
690Zone	Etc/GMT\0\00\0\0\-\0\0GMT
691.Ed
692.Pp
693The two links are chained together, and G_M_T, Greenwich, and Etc/GMT
694all name the same zone.
695.Pp
696Except for continuation lines,
697lines may appear in any order in the input.
698However, the behavior is unspecified if multiple zone or link lines
699define the same name.
700.Pp
701The file that describes leap seconds can have leap lines and an
702expiration line.
703Leap lines have the following form:
704.Bd -literal -offset indent
705Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
706.Ed
707.Pp
708For example:
709.Bd -literal -offset indent
710Leap	2016	Dec	31	23:59:60	+	S
711.Ed
712.Pp
713The
714.Ar YEAR ,
715.Ar MONTH ,
716.Ar DAY ,
717and
718.Ar HH:MM:SS
719fields tell when the leap second happened.
720The
721.Ar CORR
722field
723should be
724.Ql "+"
725if a second was added
726or
727.Ql "\-"
728if a second was skipped.
729The
730.Ar R/S
731field
732should be (an abbreviation of)
733.Dq "Stationary"
734if the leap second time given by the other fields should be interpreted as UTC
735or
736(an abbreviation of)
737.Dq "Rolling"
738if the leap second time given by the other fields should be interpreted as
739local (wall clock) time.
740.Pp
741Rolling leap seconds were implemented back when it was not
742clear whether common practice was rolling or stationary,
743with concerns that one would see
744Times Square ball drops where there'd be a
745.Dq "3... 2... 1... leap... Happy New Year"
746countdown, placing the leap second at
747midnight New York time rather than midnight UTC.
748However, this countdown style does not seem to have caught on,
749which means rolling leap seconds are not used in practice;
750also, they are not supported if the
751.Fl r
752option is used.
753.Pp
754The expiration line, if present, has the form:
755.Bd -literal -offset indent
756Expires	YEAR	MONTH	DAY	HH:MM:SS
757.Ed
758.Pp
759For example:
760.Bd -literal -offset indent
761Expires	2020	Dec	28	00:00:00
762.Ed
763.Pp
764The
765.Ar YEAR ,
766.Ar MONTH ,
767.Ar DAY ,
768and
769.Ar HH:MM:SS
770fields give the expiration timestamp in UTC for the leap second table.
771.Sh "EXTENDED EXAMPLE"
772Here is an extended example of
773.Nm
774input, intended to illustrate many of its features.
775.Bd -literal -offset indent
776# Rule	NAME	FROM	TO	\-	IN	ON	AT	SAVE	LETTER/S
777Rule	Swiss	1941	1942	\-	May	Mon>=1	1:00	1:00	S
778Rule	Swiss	1941	1942	\-	Oct	Mon>=1	2:00	0	\-
779
780Rule	EU	1977	1980	\-	Apr	Sun>=1	1:00u	1:00	S
781Rule	EU	1977	only	\-	Sep	lastSun	1:00u	0	\-
782Rule	EU	1978	only	\-	Oct	 1	1:00u	0	\-
783Rule	EU	1979	1995	\-	Sep	lastSun	1:00u	0	\-
784Rule	EU	1981	max	\-	Mar	lastSun	1:00u	1:00	S
785Rule	EU	1996	max	\-	Oct	lastSun	1:00u	0	\-
786
787# Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]
788Zone	Europe/Zurich	0:34:08	\-	LMT	1853 Jul 16
789		0:29:45.50	\-	BMT	1894 Jun
790		1:00	Swiss	CE%sT	1981
791		1:00	EU	CE%sT
792
793Link	Europe/Zurich	Europe/Vaduz
794.Ed
795.Pp
796In this example, the EU rules are for the European Union
797and for its predecessor organization, the European Communities.
798The timezone is named Europe/Zurich and it has the alias Europe/Vaduz.
799This example says that Zurich was 34 minutes and 8
800seconds east of UT until 1853-07-16 at 00:00, when the legal offset
801was changed to
8027\(de26\(fm22.50\(sd,
803which works out to 0:29:45.50;
804.Nm
805treats this by rounding it to 0:29:46.
806After 1894-06-01 at 00:00 the UT offset became one hour
807and Swiss daylight saving rules (defined with lines beginning with
808.Dq "Rule Swiss")
809apply.
810From 1981 to the present, EU daylight saving rules have
811applied, and the UTC offset has remained at one hour.
812.Pp
813In 1941 and 1942, daylight saving time applied from the first Monday
814in May at 01:00 to the first Monday in October at 02:00.
815The pre-1981 EU daylight-saving rules have no effect
816here, but are included for completeness.
817Since 1981, daylight
818saving has begun on the last Sunday in March at 01:00 UTC.
819Until 1995 it ended the last Sunday in September at 01:00 UTC,
820but this changed to the last Sunday in October starting in 1996.
821.Pp
822For purposes of display,
823.Dq "LMT"
824and
825.Dq "BMT"
826were initially used, respectively.
827Since
828Swiss rules and later EU rules were applied, the time zone abbreviation
829has been CET for standard time and CEST for daylight saving
830time.
831.Sh FILES
832.Bl -tag -width "/usr/share/zoneinfo"
833.It Pa /etc/localtime
834Default local timezone file.
835.It Pa /usr/share/zoneinfo
836Default timezone information directory.
837.El
838.Sh NOTES
839For areas with more than two types of local time,
840you may need to use local standard time in the
841.Ar AT
842field of the earliest transition time's rule to ensure that
843the earliest transition time recorded in the compiled file is correct.
844.Pp
845If,
846for a particular timezone,
847a clock advance caused by the start of daylight saving
848coincides with and is equal to
849a clock retreat caused by a change in UT offset,
850.Nm
851produces a single transition to daylight saving at the new UT offset
852without any change in local (wall clock) time.
853To get separate transitions
854use multiple zone continuation lines
855specifying transition instants using universal time.
856.Sh SEE ALSO
857.Xr tzfile 5 ,
858.Xr zdump 8
859