Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / man / man3 / Time::Local.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Time::Local 3"
132.TH Time::Local 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134Time::Local \- efficiently compute time from local and GMT time
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 2
138\& $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
139\& $time = timegm($sec,$min,$hour,$mday,$mon,$year);
140.Ve
141.SH "DESCRIPTION"
142.IX Header "DESCRIPTION"
143These routines are the inverse of built-in perl functions \fIlocaltime()\fR
144and \fIgmtime()\fR. They accept a date as a six-element array, and return
145the corresponding \fItime\fR\|(2) value in seconds since the system epoch
146(Midnight, January 1, 1970 \s-1GMT\s0 on Unix, for example). This value can
147be positive or negative, though \s-1POSIX\s0 only requires support for
148positive values, so dates before the system's epoch may not work on
149all operating systems.
150.PP
151It is worth drawing particular attention to the expected ranges for
152the values provided. The value for the day of the month is the actual day
153(ie 1..31), while the month is the number of months since January (0..11).
154This is consistent with the values returned from \fIlocaltime()\fR and \fIgmtime()\fR.
155.PP
156The \fItimelocal()\fR and \fItimegm()\fR functions perform range checking on the
157input \f(CW$sec\fR, \f(CW$min\fR, \f(CW$hour\fR, \f(CW$mday\fR, and \f(CW$mon\fR values by default. If you'd
158rather they didn't, you can explicitly import the \fItimelocal_nocheck()\fR
159and \fItimegm_nocheck()\fR functions.
160.PP
161.Vb 1
162\& use Time::Local 'timelocal_nocheck';
163.Ve
164.PP
165.Vb 3
166\& {
167\& # The 365th day of 1999
168\& print scalar localtime timelocal_nocheck 0,0,0,365,0,99;
169.Ve
170.PP
171.Vb 2
172\& # The twenty thousandth day since 1970
173\& print scalar localtime timelocal_nocheck 0,0,0,20000,0,70;
174.Ve
175.PP
176.Vb 3
177\& # And even the 10,000,000th second since 1999!
178\& print scalar localtime timelocal_nocheck 10000000,0,0,1,0,99;
179\& }
180.Ve
181.PP
182Your mileage may vary when trying these with minutes and hours,
183and it doesn't work at all for months.
184.PP
185Strictly speaking, the year should also be specified in a form consistent
186with \fIlocaltime()\fR, i.e. the offset from 1900.
187In order to make the interpretation of the year easier for humans,
188however, who are more accustomed to seeing years as two-digit or four-digit
189values, the following conventions are followed:
190.IP "\(bu" 4
191Years greater than 999 are interpreted as being the actual year,
192rather than the offset from 1900. Thus, 1964 would indicate the year
193Martin Luther King won the Nobel prize, not the year 3864.
194.IP "\(bu" 4
195Years in the range 100..999 are interpreted as offset from 1900,
196so that 112 indicates 2012. This rule also applies to years less than zero
197(but see note below regarding date range).
198.IP "\(bu" 4
199Years in the range 0..99 are interpreted as shorthand for years in the
200rolling \*(L"current century,\*(R" defined as 50 years on either side of the current
201year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045,
202but 55 would refer to 1955. Twenty years from now, 55 would instead refer
203to 2055. This is messy, but matches the way people currently think about
204two digit dates. Whenever possible, use an absolute four digit year instead.
205.PP
206The scheme above allows interpretation of a wide range of dates, particularly
207if 4\-digit years are used.
208.PP
209Please note, however, that the range of dates that can be actually be handled
210depends on the size of an integer (time_t) on a given platform.
211Currently, this is 32 bits for most systems, yielding an approximate range
212from Dec 1901 to Jan 2038.
213.PP
214Both \fItimelocal()\fR and \fItimegm()\fR croak if given dates outside the supported
215range.
216.Sh "Ambiguous Local Times (\s-1DST\s0)"
217.IX Subsection "Ambiguous Local Times (DST)"
218Because of \s-1DST\s0 changes, there are many time zones where the same local
219time occurs for two different \s-1GMT\s0 times on the same day. For example,
220in the \*(L"Europe/Paris\*(R" time zone, the local time of 2001\-10\-28 02:30:00
221can represent either 2001\-10\-28 00:30:00 \s-1GMT\s0, \fBor\fR 2001\-10\-28
22201:30:00 \s-1GMT\s0.
223.PP
224When given an ambiguous local time, the \fItimelocal()\fR function should
225always return the epoch for the \fIearlier\fR of the two possible \s-1GMT\s0
226times.
227.Sh "Non-Existent Local Times (\s-1DST\s0)"
228.IX Subsection "Non-Existent Local Times (DST)"
229When a \s-1DST\s0 change causes a locale clock to skip one hour forward,
230there will be an hour's worth of local times that don't exist. Again,
231for the \*(L"Europe/Paris\*(R" time zone, the local clock jumped from
2322001\-03\-25 01:59:59 to 2001\-03\-25 03:00:00.
233.PP
234If the \fItimelocal()\fR function is given a non-existent local time, it
235will simply return an epoch value for the time one hour later.
236.Sh "Negative Epoch Values"
237.IX Subsection "Negative Epoch Values"
238Negative epoch (time_t) values are not officially supported by the
239\&\s-1POSIX\s0 standards, so this module's tests do not test them. On some
240systems, they are known not to work. These include MacOS (pre\-OSX)
241and Win32.
242.PP
243On systems which do support negative epoch values, this module should
244be able to cope with dates before the start of the epoch, down the
245minimum value of time_t for the system.
246.SH "IMPLEMENTATION"
247.IX Header "IMPLEMENTATION"
248These routines are quite efficient and yet are always guaranteed to agree
249with \fIlocaltime()\fR and \fIgmtime()\fR. We manage this by caching the start times
250of any months we've seen before. If we know the start time of the month,
251we can always calculate any time within the month. The start times
252are calculated using a mathematical formula. Unlike other algorithms
253that do multiple calls to \fIgmtime()\fR.
254.PP
255\&\fItimelocal()\fR is implemented using the same cache. We just assume that we're
256translating a \s-1GMT\s0 time, and then fudge it when we're done for the timezone
257and daylight savings arguments. Note that the timezone is evaluated for
258each date because countries occasionally change their official timezones.
259Assuming that \fIlocaltime()\fR corrects for these changes, this routine will
260also be correct.
261.SH "BUGS"
262.IX Header "BUGS"
263The whole scheme for interpreting two-digit years can be considered a bug.
264.SH "SUPPORT"
265.IX Header "SUPPORT"
266Support for this module is provided via the datetime@perl.org
267email list. See http://lists.perl.org/ for more details.
268.PP
269Please submit bugs using the \s-1RT\s0 system at rt.cpan.org, or as a last
270resort, to the datetime@perl.org list.
271.SH "AUTHOR"
272.IX Header "AUTHOR"
273This module is based on a Perl 4 library, timelocal.pl, that was
274included with Perl 4.036, and was most likely written by Tom
275Christiansen.
276.PP
277The current version was written by Graham Barr.
278.PP
279It is now being maintained separately from the Perl core by Dave
280Rolsky, <autarch@urth.org>.