]>
Commit | Line | Data |
---|---|---|
7a529f63 | 1 | <?xml version='1.0'?> <!--*-nxml-*--> |
3a54a157 | 2 | <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
eea10b26 | 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> |
db9ecf05 | 4 | <!-- SPDX-License-Identifier: LGPL-2.1-or-later --> |
7a529f63 LP |
5 | |
6 | <refentry id="systemd.time"> | |
7 | ||
798d3a52 ZJS |
8 | <refentryinfo> |
9 | <title>systemd.time</title> | |
10 | <productname>systemd</productname> | |
798d3a52 ZJS |
11 | </refentryinfo> |
12 | ||
13 | <refmeta> | |
14 | <refentrytitle>systemd.time</refentrytitle> | |
15 | <manvolnum>7</manvolnum> | |
16 | </refmeta> | |
17 | ||
18 | <refnamediv> | |
19 | <refname>systemd.time</refname> | |
20 | <refpurpose>Time and date specifications</refpurpose> | |
21 | </refnamediv> | |
22 | ||
23 | <refsect1> | |
24 | <title>Description</title> | |
25 | ||
26 | <para>In systemd, timestamps, time spans, and calendar events are | |
27 | displayed and may be specified in closely related syntaxes.</para> | |
28 | </refsect1> | |
29 | ||
30 | <refsect1> | |
31 | <title>Displaying Time Spans</title> | |
32 | ||
21b3a0fc LP |
33 | <para>Time spans refer to time durations. On display, systemd will present time spans as a space-separated series |
34 | of time values each suffixed by a time unit. Example:</para> | |
798d3a52 ZJS |
35 | |
36 | <programlisting>2h 30min</programlisting> | |
37 | ||
21b3a0fc LP |
38 | <para>All specified time values are meant to be added up. The above hence refers to 150 minutes. Display is |
39 | locale-independent, only English names for the time units are used.</para> | |
798d3a52 ZJS |
40 | </refsect1> |
41 | ||
42 | <refsect1> | |
43 | <title>Parsing Time Spans</title> | |
44 | ||
45 | <para>When parsing, systemd will accept the same time span syntax. | |
46 | Separating spaces may be omitted. The following time units are | |
47 | understood:</para> | |
48 | ||
49 | <itemizedlist> | |
e503019b | 50 | <listitem><para>usec, us, μs</para></listitem> |
798d3a52 ZJS |
51 | <listitem><para>msec, ms</para></listitem> |
52 | <listitem><para>seconds, second, sec, s</para></listitem> | |
53 | <listitem><para>minutes, minute, min, m</para></listitem> | |
54 | <listitem><para>hours, hour, hr, h</para></listitem> | |
55 | <listitem><para>days, day, d</para></listitem> | |
56 | <listitem><para>weeks, week, w</para></listitem> | |
7236f0c6 | 57 | <listitem><para>months, month, M (defined as 30.44 days)</para></listitem> |
21b3a0fc | 58 | <listitem><para>years, year, y (defined as 365.25 days)</para></listitem> |
798d3a52 ZJS |
59 | </itemizedlist> |
60 | ||
21b3a0fc LP |
61 | <para>If no time unit is specified, generally seconds are assumed, but some exceptions exist and are marked as |
62 | such. In a few cases <literal>ns</literal>, <literal>nsec</literal> is accepted too, where the granularity of the | |
63 | time span permits this. Parsing is generally locale-independent, non-English names for the time units are not | |
64 | accepted.</para> | |
798d3a52 ZJS |
65 | |
66 | <para>Examples for valid time span specifications:</para> | |
67 | ||
68 | <programlisting>2 h | |
7a529f63 LP |
69 | 2hours |
70 | 48hr | |
71 | 1y 12month | |
72 | 55s500ms | |
73 | 300ms20s 5day</programlisting> | |
3f1c1287 CD |
74 | |
75 | <para>One can use the <command>timespan</command> command of | |
76 | <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry> | |
77 | to normalise a textual time span for testing and validation purposes.</para> | |
3c719357 LP |
78 | |
79 | <para>Internally, systemd generally operates with microsecond time granularity, while the default time | |
80 | unit in user-configurable time spans is usually seconds (see above). This disparity becomes visible when | |
81 | comparing the same settings in the (high-level) unit file syntax with the matching (more low-level) D-Bus | |
82 | properties (which are what | |
83 | <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s | |
84 | <command>show</command> command displays). The former typically are suffixed with <literal>…Sec</literal> | |
85 | to indicate the default unit of seconds, the latter are typically suffixed with <literal>…USec</literal> | |
86 | to indicate the underlying low-level time unit, even if they both encapsulate the very same | |
87 | settings.</para> | |
798d3a52 ZJS |
88 | </refsect1> |
89 | ||
90 | <refsect1> | |
91 | <title>Displaying Timestamps</title> | |
92 | ||
93 | <para>Timestamps refer to specific, unique points in time. On | |
94 | display, systemd will format these in the local timezone as | |
95 | follows:</para> | |
96 | ||
97 | <programlisting>Fri 2012-11-23 23:02:15 CET</programlisting> | |
98 | ||
21b3a0fc LP |
99 | <para>The weekday is printed in the abbreviated English language form. The formatting is locale-independent.</para> |
100 | ||
101 | <para>In some cases timestamps are shown in the UTC timezone instead of the local timezone, which is indicated via | |
102 | the <literal>UTC</literal> timezone specifier in the output.</para> | |
103 | ||
104 | <para>In some cases timestamps are shown with microsecond granularity. In this case the sub-second remainder is | |
105 | separated by a full stop from the seconds component.</para> | |
798d3a52 ZJS |
106 | </refsect1> |
107 | ||
108 | <refsect1> | |
109 | <title>Parsing Timestamps</title> | |
110 | ||
eed99fe9 | 111 | <para>When parsing, systemd will accept a similar syntax, but some fields can be omitted, |
112 | and the space between the date and time can be replaced with a <literal>T</literal> | |
113 | (à la the <ulink url="https://tools.ietf.org/html/rfc3339">RFC 3339</ulink> profile of ISO 8601); | |
114 | thus, in CET, the following are all identical: | |
115 | <literal>Fri 2012-11-23 23:02:15 CET</literal>, | |
116 | <literal>Fri 2012-11-23T23:02:15</literal>, | |
117 | <literal>2012-11-23T23:02:15 CET</literal>, | |
118 | <literal>2012-11-23 23:02:15</literal>.</para> | |
119 | ||
120 | <para>The timezone defaults to the current timezone if not specified explicitly. | |
121 | It may be given after a space, like above, in which case it can be: | |
122 | <literal>UTC</literal>, | |
123 | an entry in the installed IANA timezone database (<literal>CET</literal>, <literal>Asia/Tokyo</literal>, &c.; | |
124 | complete list obtainable with <literal>timedatectl | |
e9dd6984 | 125 | list-timezones</literal> (see |
eed99fe9 | 126 | <citerefentry><refentrytitle>timedatectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>)), |
127 | or <literal>±<replaceable>05</replaceable></literal>, | |
128 | <literal>±<replaceable>05</replaceable><replaceable>30</replaceable></literal>, | |
129 | <literal>±<replaceable>05</replaceable>:<replaceable>30</replaceable></literal>, | |
130 | <literal>Z</literal>.</para> <!-- glibc %z --> | |
131 | ||
132 | <para>It may also be affixed directly to the timestamp, in which case it must correspond | |
133 | to one of the formats defined in the | |
134 | <ulink url="https://tools.ietf.org/html/rfc3339">RFC 3339</ulink> profile of ISO 8601: | |
135 | <literal>±<replaceable>05</replaceable>:<replaceable>30</replaceable></literal> or <literal>Z</literal>. | |
136 | Thus, the following are also identical to the above: | |
137 | <literal>2012-11-23T23:02:15+01:00</literal>, | |
138 | <literal>2012-11-23 22:02:15Z</literal>.</para> | |
139 | ||
140 | <para>A timestamp can start with a field containing a weekday, which can be in an abbreviated | |
e9dd6984 | 141 | (<literal>Wed</literal>) or non-abbreviated (<literal>Wednesday</literal>) English language form (case |
eed99fe9 | 142 | does not matter), regardless of the locale. |
143 | However, if a weekday <emphasis>is</emphasis> specified and doesn't match the date, the timestamp is rejected.</para> | |
21b3a0fc | 144 | |
eed99fe9 | 145 | <para>If the date is omitted, it defaults to today. If the time is omitted, it defaults to 00:00:00. |
146 | Fractional seconds can be specified down to 1µs precision. The seconds field can also be omitted, defaulting to 0.</para> | |
798d3a52 | 147 | |
eed99fe9 | 148 | <para>There are special tokens that can be used in place of timestamps: |
149 | <literal>now</literal> may be | |
798d3a52 ZJS |
150 | used to refer to the current time (or of the invocation of the |
151 | command that is currently executed). <literal>today</literal>, | |
a8eaaee7 | 152 | <literal>yesterday</literal>, and <literal>tomorrow</literal> refer to |
b938cb90 | 153 | 00:00:00 of the current day, the day before, or the next day, |
798d3a52 ZJS |
154 | respectively.</para> |
155 | ||
eed99fe9 | 156 | <para>Relative times are also accepted: a time span (see above) prefixed with |
798d3a52 ZJS |
157 | <literal>+</literal> is evaluated to the current time plus the |
158 | specified time span. Correspondingly, a time span that is prefixed | |
159 | with <literal>-</literal> is evaluated to the current time minus | |
160 | the specified time span. Instead of prefixing the time span with | |
161 | <literal>+</literal> or <literal>-</literal>, it may also be | |
162 | suffixed with a space and the word <literal>left</literal> or | |
163 | <literal>ago</literal>.</para> | |
164 | ||
eed99fe9 | 165 | <para>Finally, an integer prefixed with <literal>@</literal> is |
166 | evaluated relative to the UNIX epoch – 1970-01-01 00:00:00 UTC.</para> | |
798d3a52 | 167 | |
437f48a4 LP |
168 | <para>Examples for valid timestamps and their normalized form (assuming the current time was 2012-11-23 |
169 | 18:15:22 and the timezone was UTC+8, for example <literal>TZ=:Asia/Shanghai</literal>):</para> | |
798d3a52 | 170 | |
54d3be97 IK |
171 | <programlisting> Fri 2012-11-23 11:12:13 → Fri 2012-11-23 11:12:13 |
172 | 2012-11-23 11:12:13 → Fri 2012-11-23 11:12:13 | |
173 | 2012-11-23 11:12:13 UTC → Fri 2012-11-23 19:12:13 | |
ef658a63 | 174 | 2012-11-23T11:12:13Z → Fri 2012-11-23 19:12:13 |
175 | 2012-11-23T11:12+02:00 → Fri 2012-11-23 17:12:00 | |
54d3be97 IK |
176 | 2012-11-23 → Fri 2012-11-23 00:00:00 |
177 | 12-11-23 → Fri 2012-11-23 00:00:00 | |
178 | 11:12:13 → Fri 2012-11-23 11:12:13 | |
179 | 11:12 → Fri 2012-11-23 11:12:00 | |
180 | now → Fri 2012-11-23 18:15:22 | |
181 | today → Fri 2012-11-23 00:00:00 | |
182 | today UTC → Fri 2012-11-23 16:00:00 | |
183 | yesterday → Fri 2012-11-22 00:00:00 | |
184 | tomorrow → Fri 2012-11-24 00:00:00 | |
185 | tomorrow Pacific/Auckland → Thu 2012-11-23 19:00:00 | |
186 | +3h30min → Fri 2012-11-23 21:45:22 | |
187 | -5s → Fri 2012-11-23 18:15:17 | |
188 | 11min ago → Fri 2012-11-23 18:04:22 | |
189 | @1395716396 → Tue 2014-03-25 03:59:56</programlisting> | |
798d3a52 | 190 | |
21b3a0fc LP |
191 | <para>Note that timestamps displayed by remote systems with a non-matching timezone are usually not parsable |
192 | locally, as the timezone component is not understood (unless it happens to be <literal>UTC</literal>).</para> | |
798d3a52 | 193 | |
21b3a0fc LP |
194 | <para>Timestamps may also be specified with microsecond granularity. The sub-second remainder is expected separated |
195 | by a full stop from the seconds component. Example:</para> | |
196 | ||
197 | <programlisting>2014-03-25 03:59:56.654563</programlisting> | |
198 | ||
199 | <para>In some cases, systemd will display a relative timestamp (relative to the current time, or the time of | |
200 | invocation of the command) instead of or in addition to an absolute timestamp as described above. A relative | |
201 | timestamp is formatted as follows:</para> | |
798d3a52 | 202 | |
21b3a0fc | 203 | <programlisting>2 months 5 days ago</programlisting> |
798d3a52 | 204 | |
21b3a0fc | 205 | <para>Note that a relative timestamp is also accepted where a timestamp is expected (see above).</para> |
2cae4711 ZJS |
206 | |
207 | <para>Use the <command>timestamp</command> command of | |
208 | <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry> to | |
209 | validate and normalize timestamps for testing purposes.</para> | |
798d3a52 ZJS |
210 | </refsect1> |
211 | ||
212 | <refsect1> | |
213 | <title>Calendar Events</title> | |
214 | ||
215 | <para>Calendar events may be used to refer to one or more points | |
216 | in time in a single expression. They form a superset of the | |
217 | absolute timestamps explained above:</para> | |
218 | ||
219 | <programlisting>Thu,Fri 2012-*-1,5 11:12:13</programlisting> | |
220 | ||
221 | <para>The above refers to 11:12:13 of the first or fifth day of | |
222 | any month of the year 2012, but only if that day is a Thursday or | |
223 | Friday.</para> | |
224 | ||
225 | <para>The weekday specification is optional. If specified, it | |
226 | should consist of one or more English language weekday names, | |
227 | either in the abbreviated (Wed) or non-abbreviated (Wednesday) | |
228 | form (case does not matter), separated by commas. Specifying two | |
e638d050 DC |
229 | weekdays separated by <literal>..</literal> refers to a range of |
230 | continuous weekdays. <literal>,</literal> and <literal>..</literal> | |
798d3a52 ZJS |
231 | may be combined freely.</para> |
232 | ||
2edc7aea LP |
233 | <para>In the date and time specifications, any component may be specified as <literal>*</literal> in |
234 | which case any value will match. Alternatively, each component can be specified as a list of values | |
235 | separated by commas. Values may be suffixed with <literal>/</literal> and a repetition value, which | |
236 | indicates that the value itself and the value plus all multiples of the repetition value are matched. | |
237 | Two values separated by <literal>..</literal> may be used to indicate a range of values; ranges may also | |
238 | be followed with <literal>/</literal> and a repetition value, in which case the expression matches all | |
239 | times starting with the start value, and continuing with all multiples of the repetition value relative | |
240 | to the start value, ending at the end value the latest.</para> | |
798d3a52 | 241 | |
0923b425 ZJS |
242 | <para>A date specification may use <literal>~</literal> to indicate the last day in a month. For example, |
243 | <literal>*-02~03</literal> means "the third last day in February," and <literal>Mon *-05~07/1</literal> | |
8ea80351 DC |
244 | means "the last Monday in May."</para> |
245 | ||
ab15dfb7 HV |
246 | <para>The seconds component may contain decimal fractions both in |
247 | the value and the repetition. All fractions are rounded to 6 | |
248 | decimal places.</para> | |
249 | ||
798d3a52 | 250 | <para>Either time or date specification may be omitted, in which |
5de02fe1 CG |
251 | case *-*-* and 00:00:00 is implied, respectively. If the |
252 | seconds component is not specified, <literal>:00</literal> is | |
798d3a52 ZJS |
253 | assumed.</para> |
254 | ||
54d3be97 IK |
255 | <para>Timezone can be specified as the literal string <literal>UTC</literal>, or |
256 | the local timezone, similar to the supported syntax of timestamps (see above), or the timezone | |
257 | in the IANA timezone database format (also see above).</para> | |
798d3a52 | 258 | |
6d892bd1 MS |
259 | <para>The following special expressions may be used as shorthands for longer normalized forms:</para> |
260 | ||
261 | <programlisting> minutely → *-*-* *:*:00 | |
262 | hourly → *-*-* *:00:00 | |
263 | daily → *-*-* 00:00:00 | |
264 | monthly → *-*-01 00:00:00 | |
265 | weekly → Mon *-*-* 00:00:00 | |
266 | yearly → *-01-01 00:00:00 | |
267 | quarterly → *-01,04,07,10-01 00:00:00 | |
268 | semiannually → *-01,07-01 00:00:00 | |
269 | </programlisting> | |
798d3a52 ZJS |
270 | |
271 | <para>Examples for valid timestamps and their | |
272 | normalized form:</para> | |
7a529f63 | 273 | |
21b3a0fc LP |
274 | <programlisting> Sat,Thu,Mon..Wed,Sat..Sun → Mon..Thu,Sat,Sun *-*-* 00:00:00 |
275 | Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00 | |
276 | Wed *-1 → Wed *-*-01 00:00:00 | |
e638d050 | 277 | Wed..Wed,Wed *-1 → Wed *-*-01 00:00:00 |
21b3a0fc | 278 | Wed, 17:48 → Wed *-*-* 17:48:00 |
e638d050 | 279 | Wed..Sat,Tue 12-10-15 1:2:3 → Tue..Sat 2012-10-15 01:02:03 |
21b3a0fc LP |
280 | *-*-7 0:0:0 → *-*-07 00:00:00 |
281 | 10-15 → *-10-15 00:00:00 | |
282 | monday *-12-* 17:00 → Mon *-12-* 17:00:00 | |
283 | Mon,Fri *-*-3,1,2 *:30:45 → Mon,Fri *-*-01,02,03 *:30:45 | |
284 | 12,14,13,12:20,10,30 → *-*-* 12,13,14:10,20,30:00 | |
9904dc00 | 285 | 12..14:10,20,30 → *-*-* 12..14:10,20,30:00 |
21b3a0fc LP |
286 | mon,fri *-1/2-1,3 *:30:45 → Mon,Fri *-01/2-01,03 *:30:45 |
287 | 03-05 08:05:40 → *-03-05 08:05:40 | |
288 | 08:05:40 → *-*-* 08:05:40 | |
289 | 05:40 → *-*-* 05:40:00 | |
290 | Sat,Sun 12-05 08:05:40 → Sat,Sun *-12-05 08:05:40 | |
291 | Sat,Sun 08:05:40 → Sat,Sun *-*-* 08:05:40 | |
292 | 2003-03-05 05:40 → 2003-03-05 05:40:00 | |
a2eb5ea7 | 293 | 05:40:23.4200004/3.1700005 → *-*-* 05:40:23.420000/3.170001 |
9904dc00 | 294 | 2003-02..04-05 → 2003-02..04-05 00:00:00 |
21b3a0fc LP |
295 | 2003-03-05 05:40 UTC → 2003-03-05 05:40:00 UTC |
296 | 2003-03-05 → 2003-03-05 00:00:00 | |
297 | 03-05 → *-03-05 00:00:00 | |
298 | hourly → *-*-* *:00:00 | |
299 | daily → *-*-* 00:00:00 | |
300 | daily UTC → *-*-* 00:00:00 UTC | |
301 | monthly → *-*-01 00:00:00 | |
302 | weekly → Mon *-*-* 00:00:00 | |
54d3be97 | 303 | weekly Pacific/Auckland → Mon *-*-* 00:00:00 Pacific/Auckland |
21b3a0fc LP |
304 | yearly → *-01-01 00:00:00 |
305 | annually → *-01-01 00:00:00 | |
306 | *:2/3 → *-*-* *:02/3:00</programlisting> | |
798d3a52 ZJS |
307 | |
308 | <para>Calendar events are used by timer units, see | |
309 | <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry> | |
310 | for details.</para> | |
311 | ||
6d86f4bd LP |
312 | <para>Use the <command>calendar</command> command of |
313 | <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry> to validate | |
314 | and normalize calendar time specifications for testing purposes. The tool also calculates when a specified | |
e9dd6984 | 315 | calendar event would occur next.</para> |
798d3a52 ZJS |
316 | </refsect1> |
317 | ||
318 | <refsect1> | |
319 | <title>See Also</title> | |
13a69c12 DT |
320 | <para><simplelist type="inline"> |
321 | <member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> | |
322 | <member><citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> | |
323 | <member><citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry></member> | |
324 | <member><citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry></member> | |
325 | <member><citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry></member> | |
326 | <member><citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> | |
327 | </simplelist></para> | |
798d3a52 | 328 | </refsect1> |
7a529f63 LP |
329 | |
330 | </refentry> |