polars_time/chunkedarray/string/
patterns.rs

1//! Patterns are grouped together by order of month, day, year. This is to prevent
2//! parsing different orders of dates in a single column.
3
4pub(super) static DATE_D_M_Y: &[&str] = &[
5    "%d-%m-%Y", // 31-12-2021
6    "%d/%m/%Y", // 31/12/2021
7    "%d.%m.%Y", // 31.12.2021
8];
9
10pub(super) static DATE_Y_M_D: &[&str] = &[
11    "%Y-%m-%d", // 2021-12-31
12    "%Y/%m/%d", // 2021/12/31
13    "%Y.%m.%d", // 2021.12.31
14];
15
16/// NOTE: don't use single letter dates like %F
17/// polars parsers does not support them, so it will be slower
18pub(super) static DATETIME_D_M_Y: &[&str] = &[
19    "%d-%m-%YT%H:%M:%S.%9f",
20    "%d-%m-%YT%H:%M:%S.%6f",
21    "%d-%m-%YT%H:%M:%S.%3f",
22    "%d-%m-%YT%H:%M:%S",
23    "%d-%m-%YT%H%M%S.%9f",
24    "%d-%m-%YT%H%M%S.%6f",
25    "%d-%m-%YT%H%M%S.%3f",
26    "%d-%m-%YT%H%M%S",
27    "%d-%m-%YT%H:%M",
28    "%d-%m-%YT%H%M",
29    "%d-%m-%Y %H:%M:%S.%9f",
30    "%d-%m-%Y %H:%M:%S.%6f",
31    "%d-%m-%Y %H:%M:%S.%3f",
32    "%d-%m-%Y %H:%M:%S",
33    "%d-%m-%Y %H%M%S.%9f",
34    "%d-%m-%Y %H%M%S.%6f",
35    "%d-%m-%Y %H%M%S.%3f",
36    "%d-%m-%Y %H%M%S",
37    "%d-%m-%Y %H:%M",
38    "%d-%m-%Y %H%M",
39    "%d-%m-%Y",
40    "%d/%m/%YT%H:%M:%S.%9f",
41    "%d/%m/%YT%H:%M:%S.%6f",
42    "%d/%m/%YT%H:%M:%S.%3f",
43    "%d/%m/%YT%H:%M:%S",
44    "%d/%m/%YT%H%M%S.%9f",
45    "%d/%m/%YT%H%M%S.%6f",
46    "%d/%m/%YT%H%M%S.%3f",
47    "%d/%m/%YT%H%M%S",
48    "%d/%m/%YT%H:%M",
49    "%d/%m/%YT%H%M",
50    "%d/%m/%Y %H:%M:%S.%9f",
51    "%d/%m/%Y %H:%M:%S.%6f",
52    "%d/%m/%Y %H:%M:%S.%3f",
53    "%d/%m/%Y %H:%M:%S",
54    "%d/%m/%Y %H%M%S.%9f",
55    "%d/%m/%Y %H%M%S.%6f",
56    "%d/%m/%Y %H%M%S.%3f",
57    "%d/%m/%Y %H%M%S",
58    "%d/%m/%Y %H:%M",
59    "%d/%m/%Y %H%M",
60    "%d/%m/%Y",
61    "%d.%m.%YT%H:%M:%S.%9f",
62    "%d.%m.%YT%H:%M:%S.%6f",
63    "%d.%m.%YT%H:%M:%S.%3f",
64    "%d.%m.%YT%H:%M:%S",
65    "%d.%m.%YT%H%M%S.%9f",
66    "%d.%m.%YT%H%M%S.%6f",
67    "%d.%m.%YT%H%M%S.%3f",
68    "%d.%m.%YT%H%M%S",
69    "%d.%m.%YT%H:%M",
70    "%d.%m.%YT%H%M",
71    "%d.%m.%Y %H:%M:%S.%9f",
72    "%d.%m.%Y %H:%M:%S.%6f",
73    "%d.%m.%Y %H:%M:%S.%3f",
74    "%d.%m.%Y %H:%M:%S",
75    "%d.%m.%Y %H%M%S.%9f",
76    "%d.%m.%Y %H%M%S.%6f",
77    "%d.%m.%Y %H%M%S.%3f",
78    "%d.%m.%Y %H%M%S",
79    "%d.%m.%Y %H:%M",
80    "%d.%m.%Y %H%M",
81    "%d.%m.%Y",
82];
83
84/// NOTE: don't use single letter dates like %F
85/// polars parsers does not support them, so it will be slower
86pub(super) static DATETIME_Y_M_D: &[&str] = &[
87    "%Y-%m-%dT%H:%M:%S.%9f",
88    "%Y-%m-%dT%H:%M:%S.%6f",
89    "%Y-%m-%dT%H:%M:%S.%3f",
90    "%Y-%m-%dT%H:%M:%S",
91    "%Y-%m-%dT%H%M%S.%9f",
92    "%Y-%m-%dT%H%M%S.%6f",
93    "%Y-%m-%dT%H%M%S.%3f",
94    "%Y-%m-%dT%H%M%S",
95    "%Y-%m-%dT%H:%M",
96    "%Y-%m-%dT%H%M",
97    "%Y-%m-%d %H:%M:%S.%9f",
98    "%Y-%m-%d %H:%M:%S.%6f",
99    "%Y-%m-%d %H:%M:%S.%3f",
100    "%Y-%m-%d %H:%M:%S",
101    "%Y-%m-%d %H%M%S.%9f",
102    "%Y-%m-%d %H%M%S.%6f",
103    "%Y-%m-%d %H%M%S.%3f",
104    "%Y-%m-%d %H%M%S",
105    "%Y-%m-%d %H:%M",
106    "%Y-%m-%d %H%M",
107    "%Y-%m-%d",
108    "%Y/%m/%dT%H:%M:%S.%9f",
109    "%Y/%m/%dT%H:%M:%S.%6f",
110    "%Y/%m/%dT%H:%M:%S.%3f",
111    "%Y/%m/%dT%H:%M:%S",
112    "%Y/%m/%dT%H%M%S.%9f",
113    "%Y/%m/%dT%H%M%S.%6f",
114    "%Y/%m/%dT%H%M%S.%3f",
115    "%Y/%m/%dT%H%M%S",
116    "%Y/%m/%dT%H:%M",
117    "%Y/%m/%dT%H%M",
118    "%Y/%m/%d %H:%M:%S.%9f",
119    "%Y/%m/%d %H:%M:%S.%6f",
120    "%Y/%m/%d %H:%M:%S.%3f",
121    "%Y/%m/%d %H:%M:%S",
122    "%Y/%m/%d %H%M%S.%9f",
123    "%Y/%m/%d %H%M%S.%6f",
124    "%Y/%m/%d %H%M%S.%3f",
125    "%Y/%m/%d %H%M%S",
126    "%Y/%m/%d %H:%M",
127    "%Y/%m/%d %H%M",
128    "%Y/%m/%d",
129    "%Y.%m.%dT%H:%M:%S.%9f",
130    "%Y.%m.%dT%H:%M:%S.%6f",
131    "%Y.%m.%dT%H:%M:%S.%3f",
132    "%Y.%m.%dT%H:%M:%S",
133    "%Y.%m.%dT%H%M%S.%9f",
134    "%Y.%m.%dT%H%M%S.%6f",
135    "%Y.%m.%dT%H%M%S.%3f",
136    "%Y.%m.%dT%H%M%S",
137    "%Y.%m.%dT%H:%M",
138    "%Y.%m.%dT%H%M",
139    "%Y.%m.%d %H:%M:%S.%9f",
140    "%Y.%m.%d %H:%M:%S.%6f",
141    "%Y.%m.%d %H:%M:%S.%3f",
142    "%Y.%m.%d %H:%M:%S",
143    "%Y.%m.%d %H%M%S.%9f",
144    "%Y.%m.%d %H%M%S.%6f",
145    "%Y.%m.%d %H%M%S.%3f",
146    "%Y.%m.%d %H%M%S",
147    "%Y.%m.%d %H:%M",
148    "%Y.%m.%d %H%M",
149    "%Y.%m.%d",
150    "%Y-%m-%dT%H:%M:%S%.f", // ISO 8601 with dynamic precision and without timezone
151];
152
153pub(super) static DATETIME_Y_M_D_Z: &[&str] = &[
154    "%Y-%m-%dT%H:%M:%S.%9f%#z",
155    "%Y-%m-%dT%H:%M:%S.%6f%#z",
156    "%Y-%m-%dT%H:%M:%S.%3f%#z",
157    "%Y-%m-%dT%H:%M:%S%#z",
158    "%Y-%m-%dT%H%M%S.%9f%#z",
159    "%Y-%m-%dT%H%M%S.%6f%#z",
160    "%Y-%m-%dT%H%M%S.%3f%#z",
161    "%Y-%m-%dT%H%M%S%#z",
162    "%Y-%m-%dT%H:%M%#z",
163    "%Y-%m-%dT%H%M%#z",
164    "%Y-%m-%d %H:%M:%S.%9f%#z",
165    "%Y-%m-%d %H:%M:%S.%6f%#z",
166    "%Y-%m-%d %H:%M:%S.%3f%#z",
167    "%Y-%m-%d %H:%M:%S%#z",
168    "%Y-%m-%d %H%M%S.%9f%#z",
169    "%Y-%m-%d %H%M%S.%6f%#z",
170    "%Y-%m-%d %H%M%S.%3f%#z",
171    "%Y-%m-%d %H%M%S%#z",
172    "%Y-%m-%d %H:%M%#z",
173    "%Y-%m-%d %H%M%#z",
174    "%Y/%m/%dT%H:%M:%S.%9f%#z",
175    "%Y/%m/%dT%H:%M:%S.%6f%#z",
176    "%Y/%m/%dT%H:%M:%S.%3f%#z",
177    "%Y/%m/%dT%H:%M:%S%#z",
178    "%Y/%m/%dT%H%M%S.%9f%#z",
179    "%Y/%m/%dT%H%M%S.%6f%#z",
180    "%Y/%m/%dT%H%M%S.%3f%#z",
181    "%Y/%m/%dT%H%M%S%#z",
182    "%Y/%m/%dT%H:%M%#z",
183    "%Y/%m/%dT%H%M%#z",
184    "%Y/%m/%d %H:%M:%S.%9f%#z",
185    "%Y/%m/%d %H:%M:%S.%6f%#z",
186    "%Y/%m/%d %H:%M:%S.%3f%#z",
187    "%Y/%m/%d %H:%M:%S%#z",
188    "%Y/%m/%d %H%M%S.%9f%#z",
189    "%Y/%m/%d %H%M%S.%6f%#z",
190    "%Y/%m/%d %H%M%S.%3f%#z",
191    "%Y/%m/%d %H%M%S%#z",
192    "%Y/%m/%d %H:%M%#z",
193    "%Y/%m/%d %H%M%#z",
194    "%Y.%m.%dT%H:%M:%S.%9f%#z",
195    "%Y.%m.%dT%H:%M:%S.%6f%#z",
196    "%Y.%m.%dT%H:%M:%S.%3f%#z",
197    "%Y.%m.%dT%H:%M:%S%#z",
198    "%Y.%m.%dT%H%M%S.%9f%#z",
199    "%Y.%m.%dT%H%M%S.%6f%#z",
200    "%Y.%m.%dT%H%M%S.%3f%#z",
201    "%Y.%m.%dT%H%M%S%#z",
202    "%Y.%m.%dT%H:%M%#z",
203    "%Y.%m.%dT%H%M%#z",
204    "%Y.%m.%d %H:%M:%S.%9f%#z",
205    "%Y.%m.%d %H:%M:%S.%6f%#z",
206    "%Y.%m.%d %H:%M:%S.%3f%#z",
207    "%Y.%m.%d %H:%M:%S%#z",
208    "%Y.%m.%d %H%M%S.%9f%#z",
209    "%Y.%m.%d %H%M%S.%6f%#z",
210    "%Y.%m.%d %H%M%S.%3f%#z",
211    "%Y.%m.%d %H%M%S%#z",
212    "%Y.%m.%d %H:%M%#z",
213    "%Y.%m.%d %H%M%#z",
214    "%+", // ISO 8601; Same as %Y-%m-%dT%H:%M:%S%.f%:z; supports Z or UTC
215];
216
217pub(super) static TIME_H_M_S: &[&str] = &["%T%.9f", "%T%.6f", "%T%.3f", "%T"];
218
219#[derive(Eq, Hash, PartialEq, Clone, Copy, Debug)]
220pub enum Pattern {
221    DateDMY,
222    DateYMD,
223    DatetimeYMD,
224    DatetimeDMY,
225    DatetimeYMDZ,
226    Time,
227}