Skip to main content

deep_time/utc/
leap_seconds_list.rs

1//! Leap seconds table from the official IANA
2//! [leap-seconds.list](https://data.iana.org/time-zones/data/leap-seconds.list)
3//! Last leap second: 2017-01-01 (TAI-UTC = 37 s)
4//! File expires: 28 December 2026
5
6/// Holds info about a leap-second transition. Used by [LEAP_SECS](constant.LEAP_SECS.html).
7#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
8pub struct LeapSec {
9    /// NTP timestamp of the transition (IANA file, column 1)
10    pub ntp_timestamp: i64,
11    /// Cumulative TAI-UTC offset in seconds after this transition (IANA column 2)
12    pub leap_sec_after: i64,
13    /// Library timestamp of the transition on the UTC scale
14    pub utc_sec: i64,
15    /// Library timestamp of the transition on the TAI scale
16    pub tai_sec: i64,
17}
18
19/// Embedded leap-seconds list shipped with the library.
20///
21/// Each entry records the instant when the cumulative TAI-UTC offset
22/// changes. Rows are sorted chronologically.
23pub const LEAP_SECS: &[LeapSec] = &[
24    LeapSec {
25        ntp_timestamp: 2272060800,
26        leap_sec_after: 10,
27        utc_sec: -883656000,
28        tai_sec: -883655991,
29    }, // 1 Jan 1972
30    LeapSec {
31        ntp_timestamp: 2287785600,
32        leap_sec_after: 11,
33        utc_sec: -867931200,
34        tai_sec: -867931190,
35    }, // 1 Jul 1972
36    LeapSec {
37        ntp_timestamp: 2303683200,
38        leap_sec_after: 12,
39        utc_sec: -852033600,
40        tai_sec: -852033589,
41    }, // 1 Jan 1973
42    LeapSec {
43        ntp_timestamp: 2335219200,
44        leap_sec_after: 13,
45        utc_sec: -820497600,
46        tai_sec: -820497588,
47    }, // 1 Jan 1974
48    LeapSec {
49        ntp_timestamp: 2366755200,
50        leap_sec_after: 14,
51        utc_sec: -788961600,
52        tai_sec: -788961587,
53    }, // 1 Jan 1975
54    LeapSec {
55        ntp_timestamp: 2398291200,
56        leap_sec_after: 15,
57        utc_sec: -757425600,
58        tai_sec: -757425586,
59    }, // 1 Jan 1976
60    LeapSec {
61        ntp_timestamp: 2429913600,
62        leap_sec_after: 16,
63        utc_sec: -725803200,
64        tai_sec: -725803185,
65    }, // 1 Jan 1977
66    LeapSec {
67        ntp_timestamp: 2461449600,
68        leap_sec_after: 17,
69        utc_sec: -694267200,
70        tai_sec: -694267184,
71    }, // 1 Jan 1978
72    LeapSec {
73        ntp_timestamp: 2492985600,
74        leap_sec_after: 18,
75        utc_sec: -662731200,
76        tai_sec: -662731183,
77    }, // 1 Jan 1979
78    LeapSec {
79        ntp_timestamp: 2524521600,
80        leap_sec_after: 19,
81        utc_sec: -631195200,
82        tai_sec: -631195182,
83    }, // 1 Jan 1980
84    LeapSec {
85        ntp_timestamp: 2571782400,
86        leap_sec_after: 20,
87        utc_sec: -583934400,
88        tai_sec: -583934381,
89    }, // 1 Jul 1981
90    LeapSec {
91        ntp_timestamp: 2603318400,
92        leap_sec_after: 21,
93        utc_sec: -552398400,
94        tai_sec: -552398380,
95    }, // 1 Jul 1982
96    LeapSec {
97        ntp_timestamp: 2634854400,
98        leap_sec_after: 22,
99        utc_sec: -520862400,
100        tai_sec: -520862379,
101    }, // 1 Jul 1983
102    LeapSec {
103        ntp_timestamp: 2698012800,
104        leap_sec_after: 23,
105        utc_sec: -457704000,
106        tai_sec: -457703978,
107    }, // 1 Jul 1985
108    LeapSec {
109        ntp_timestamp: 2776982400,
110        leap_sec_after: 24,
111        utc_sec: -378734400,
112        tai_sec: -378734377,
113    }, // 1 Jan 1988
114    LeapSec {
115        ntp_timestamp: 2840140800,
116        leap_sec_after: 25,
117        utc_sec: -315576000,
118        tai_sec: -315575976,
119    }, // 1 Jan 1990
120    LeapSec {
121        ntp_timestamp: 2871676800,
122        leap_sec_after: 26,
123        utc_sec: -284040000,
124        tai_sec: -284039975,
125    }, // 1 Jan 1991
126    LeapSec {
127        ntp_timestamp: 2918937600,
128        leap_sec_after: 27,
129        utc_sec: -236779200,
130        tai_sec: -236779174,
131    }, // 1 Jul 1992
132    LeapSec {
133        ntp_timestamp: 2950473600,
134        leap_sec_after: 28,
135        utc_sec: -205243200,
136        tai_sec: -205243173,
137    }, // 1 Jul 1993
138    LeapSec {
139        ntp_timestamp: 2982009600,
140        leap_sec_after: 29,
141        utc_sec: -173707200,
142        tai_sec: -173707172,
143    }, // 1 Jul 1994
144    LeapSec {
145        ntp_timestamp: 3029443200,
146        leap_sec_after: 30,
147        utc_sec: -126273600,
148        tai_sec: -126273571,
149    }, // 1 Jan 1996
150    LeapSec {
151        ntp_timestamp: 3076704000,
152        leap_sec_after: 31,
153        utc_sec: -79012800,
154        tai_sec: -79012770,
155    }, // 1 Jul 1997
156    LeapSec {
157        ntp_timestamp: 3124137600,
158        leap_sec_after: 32,
159        utc_sec: -31579200,
160        tai_sec: -31579169,
161    }, // 1 Jan 1999
162    LeapSec {
163        ntp_timestamp: 3345062400,
164        leap_sec_after: 33,
165        utc_sec: 189345600,
166        tai_sec: 189345632,
167    }, // 1 Jan 2006
168    LeapSec {
169        ntp_timestamp: 3439756800,
170        leap_sec_after: 34,
171        utc_sec: 284040000,
172        tai_sec: 284040033,
173    }, // 1 Jan 2009
174    LeapSec {
175        ntp_timestamp: 3550089600,
176        leap_sec_after: 35,
177        utc_sec: 394372800,
178        tai_sec: 394372834,
179    }, // 1 Jul 2012
180    LeapSec {
181        ntp_timestamp: 3644697600,
182        leap_sec_after: 36,
183        utc_sec: 488980800,
184        tai_sec: 488980835,
185    }, // 1 Jul 2015
186    LeapSec {
187        ntp_timestamp: 3692217600,
188        leap_sec_after: 37,
189        utc_sec: 536500800,
190        tai_sec: 536500836,
191    }, // 1 Jan 2017
192];