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