Files
zen/core/expression/tests/data/date.csv
T

12 KiB

1expression (string);input (json 5);output (json 5)
2# Date function basics
3d('2023-10-15');;'2023-10-15T00:00:00Z'
4d('2023-10-15 14:30');;'2023-10-15T14:30:00Z'
5d('2023-10-15 14:30:45');;'2023-10-15T14:30:45Z'
6d('2023-10-15', 'Europe/Berlin');;'2023-10-15T00:00:00+02:00'
7d('2023-10-15 14:30', 'Europe/Berlin');;'2023-10-15T14:30:00+02:00'
8d('2023-10-15 14:30:45', 'Europe/Berlin');;'2023-10-15T14:30:45+02:00'
9d('Europe/Berlin').isValid() and d('Europe/Berlin').isToday();;true
10# Date manipulation
11d('2023-10-15').add('1d');;'2023-10-16T00:00:00Z'
12d('2023-10-15').add('1d 5h');;'2023-10-16T05:00:00Z'
13d('2023-10-15').add(1, 'd');;'2023-10-16T00:00:00Z'
14d('2023-10-15').sub('2d');;'2023-10-13T00:00:00Z'
15d('2023-10-15').sub(1, 'M');;'2023-09-15T00:00:00Z'
16# Date comparisons
17d('2023-10-15').isBefore(d('2023-10-16'));;true
18d('2023-10-15').isBefore(d('2023-10-15'));;false
19d('2023-10-15').isAfter(d('2023-10-14'));;true
20d('2023-10-15').isAfter(d('2023-10-15'));;false
21d('2023-10-15').isSame(d('2023-10-15'));;true
22d('2023-10-15').isSame(d('2023-10-16'));;false
23d('2023-10-15').isSameOrBefore(d('2023-10-15'));;true
24d('2023-10-15').isSameOrBefore(d('2023-10-16'));;true
25d('2023-10-15').isSameOrBefore(d('2023-10-14'));;false
26d('2023-10-15').isSameOrAfter(d('2023-10-15'));;true
27d('2023-10-15').isSameOrAfter(d('2023-10-14'));;true
28d('2023-10-15').isSameOrAfter(d('2023-10-16'));;false
29d('2025-02-01').isAfter(d('2025-01-05'), 'year');;false
30d('2025-02-01').isAfter(d('2024-12-31'), 'year');;true
31d('2025-02-01').isBefore(d('2025-03-01'), 'year');;false
32d('2025-02-01').isBefore(d('2026-01-01'), 'year');;true
33d('2025-02-01').isSame(d('2025-12-31'), 'year');;true
34d('2025-02-01').isSame(d('2026-01-01'), 'year');;false
35d('2025-02-15').isAfter(d('2025-01-05'), 'month');;true
36d('2025-02-15').isAfter(d('2025-02-05'), 'month');;false
37d('2025-02-15').isBefore(d('2025-03-01'), 'month');;true
38d('2025-02-15').isBefore(d('2025-02-28'), 'month');;false
39d('2025-02-15').isSame(d('2025-02-28'), 'month');;true
40d('2025-02-15').isSame(d('2025-03-01'), 'month');;false
41d('2025-04-15').isAfter(d('2025-01-01'), 'quarter');;true
42d('2025-02-15').isAfter(d('2025-03-31'), 'quarter');;false
43d('2025-02-15').isBefore(d('2025-04-01'), 'quarter');;true
44d('2025-02-15').isBefore(d('2025-03-31'), 'quarter');;false
45d('2025-02-15').isSame(d('2025-03-15'), 'quarter');;true
46d('2025-02-15').isSame(d('2025-04-01'), 'quarter');;false
47d('2025-02-15').isAfter(d('2025-02-14'), 'day');;true
48d('2025-02-15').isAfter(d('2025-02-15'), 'day');;false
49d('2025-02-15').isBefore(d('2025-02-16'), 'day');;true
50d('2025-02-15').isBefore(d('2025-02-15'), 'day');;false
51d('2025-02-15').isSame(d('2025-02-15 12:00:00'), 'day');;true
52d('2025-02-15').isSame(d('2025-02-16'), 'day');;false
53# Date getters
54d('2023-10-15').year();;2023
55d('2023-10-15').month();;10
56d('2023-10-15').day();;15
57d('2023-10-15').weekday();;7
58d('2023-10-16').weekday();;1
59d('2023-10-15').hour();;0
60d('2023-10-15').minute();;0
61d('2023-10-15').second();;0
62d('2023-10-15').dayOfYear();;288
63d('2023-01-01').dayOfYear();;1
64d('2023-12-31').dayOfYear();;365
65d('2024-12-31').dayOfYear();;366
66d('2023-10-15').quarter();;4
67d('2023-01-15').quarter();;1
68d('2023-04-15').quarter();;2
69d('2023-07-15').quarter();;3
70d('2023-10-15').timestamp();;1697328000000
71d('2023-10-15', 'Europe/Berlin').offsetName();;'Europe/Berlin'
72d('2023-10-15', 'America/Los_Angeles').offsetName();;'America/Los_Angeles'
73d('2023-10-15').isLeapYear();;false
74d('2024-10-15').isLeapYear();;true
75d('2000-10-15').isLeapYear();;true
76d('1900-10-15').isLeapYear();;false
77# Date setters
78d('2023-10-15').set('year', 2024);;'2024-10-15T00:00:00Z'
79d('2023-10-15').set('month', 5);;'2023-05-15T00:00:00Z'
80d('2023-10-15').set('day', 20);;'2023-10-20T00:00:00Z'
81d('2023-10-15T10:30:00Z').set('hour', 15);;'2023-10-15T15:30:00Z'
82d('2023-10-15T10:30:00Z').set('minute', 45);;'2023-10-15T10:45:00Z'
83d('2023-10-15T10:30:00Z').set('second', 30);;'2023-10-15T10:30:30Z'
84# Special date checks
85d().isSame(d(), 'day');;true
86d('2023-10-15').startOf('day');;'2023-10-15T00:00:00Z'
87d('2023-10-15T10:30:45Z').startOf('hour');;'2023-10-15T10:00:00Z'
88d('2023-10-15').endOf('day');;'2023-10-15T23:59:59Z'
89d('2023-10-15T10:30:45Z').endOf('hour');;'2023-10-15T10:59:59Z'
90d('2023-10-15').startOf('month');;'2023-10-01T00:00:00Z'
91d('2023-10-15').endOf('month');;'2023-10-31T23:59:59Z'
92d('2023-10-15').startOf('year');;'2023-01-01T00:00:00Z'
93d('2023-10-15').endOf('year');;'2023-12-31T23:59:59Z'
94d('2023-10-15').startOf('week');;'2023-10-09T00:00:00Z'
95d('2023-10-15').endOf('week');;'2023-10-15T23:59:59Z'
96d('2023-10-15').startOf('quarter');;'2023-10-01T00:00:00Z'
97d('2023-10-15').endOf('quarter');;'2023-12-31T23:59:59Z'
98d('2023-03-15').startOf('quarter');;'2023-01-01T00:00:00Z'
99d('2023-03-15').endOf('quarter');;'2023-03-31T23:59:59Z'
100d('2023-06-15').startOf('quarter');;'2023-04-01T00:00:00Z'
101d('2023-06-15').endOf('quarter');;'2023-06-30T23:59:59Z'
102d('2023-09-15').startOf('quarter');;'2023-07-01T00:00:00Z'
103d('2023-09-15').endOf('quarter');;'2023-09-30T23:59:59Z'
104# Timezone operations
105d('2023-10-15T00:00:00Z').tz('America/New_York');;'2023-10-14T20:00:00-04:00'
106d('2023-10-15T00:00:00Z').tz('Europe/London');;'2023-10-15T01:00:00+01:00'
107d('2023-10-15T00:00:00+00:00').tz('UTC');;'2023-10-15T00:00:00Z'
108d('2023-10-15T12:00:00+02:00', 'Etc/GMT-2').tz('UTC');;'2023-10-15T10:00:00Z'
109# Relative date methods
110d().sub(1, 'd').isYesterday();;true
111d().add(1, 'd').isTomorrow();;true
112d('2023-10-15').isToday();;false
113# Diff
114d('2023-10-15').diff(d('2023-10-10'), 'day');;5
115d('2023-10-15T10:00:00Z').diff(d('2023-10-15T08:30:00Z'), 'hour');;1
116d('2023-10-15').diff(d('2023-09-15'), 'month');;1
117d('2023-12-31').diff(d('2023-01-01'), 'year');;0
118d('2023-12-31').diff(d('2022-01-01'), 'year');;1
119d('2023-10-10').diff(d('2023-10-15'), 'day');;-5
120d('2023-09-15').diff(d('2023-10-15'), 'month');;-1
121d('2022-01-01').diff(d('2023-12-31'), 'year');;-1
122d('2023-10-15T10:30:00Z').diff(d('2023-10-15T10:00:00Z'), 'minute');;30
123d('2023-10-15T10:00:30Z').diff(d('2023-10-15T10:00:00Z'), 'second');;30
124d('2023-10-22').diff(d('2023-10-15'), 'week');;1
125d('2023-10-29').diff(d('2023-10-15'), 'week');;2
126d('2023-07-01').diff(d('2023-01-01'), 'quarter');;2
127d('2023-12-31').diff(d('2023-01-01'), 'quarter');;3
128d('2023-10-15').diff(d('2023-10-15'), 'day');;0
129d('2023-10-15').diff(d('2023-10-15'), 'month');;0
130d('2023-10-15').diff(d('2023-10-15'), 'year');;0
131d('2023-03-31').diff(d('2023-02-28'), 'month');;1
132d('2024-02-29').diff(d('2024-01-31'), 'month');;1
133d('2023-05-31').diff(d('2023-04-30'), 'month');;1
134d('2023-03-31').diff(d('2023-02-28'), 'month');;1
135d('2023-02-28').diff(d('2023-01-31'), 'month');;1
136d('2023-04-30').diff(d('2023-03-31'), 'month');;1
137d('2024-02-29').diff(d('2023-02-28'), 'year');;1
138d('2023-12-31').diff(d('2023-01-01'), 'year');;0
139d('2024-01-01').diff(d('2023-01-01'), 'year');;1
140d('2025-01-01').diff(d('2020-01-01'), 'year');;5
141d('2023-12-01').diff(d('2023-01-01'), 'month');;11
142d('2023-12-31').diff(d('2023-01-01'), 'day');;364
143d('2023-10-15T12:00:00Z').diff(d('2023-10-15T10:30:00Z'), 'hour');;1
144d('2023-10-16T12:00:00Z').diff(d('2023-10-15T18:00:00Z'), 'day');;0
145# Formatting
146d('2023-10-15').format('%Y-%m-%d');;'2023-10-15'
147d('2023-10-15').format('%Y/%m/%d');;'2023/10/15'
148d('2023-10-15T14:30:45Z').format('%A, %B %d %Y, %H:%M:%S');;'Sunday, October 15 2023, 14:30:45'
149d('2023-10-15T14:30:45Z').format('%a %b %d %H:%M');;'Sun Oct 15 14:30'
150d('2023-10-15T14:30:45Z').format('Day %j of year %Y');;'Day 288 of year 2023'
151d('2023-10-15T14:30:45.123Z').format('%H:%M:%S.%f');;'14:30:45.123000000'
152# Date validations
153d(null).isValid();;false
154d('foo').isValid();;false
155d('2023-13-01').isValid();;false
156d('2023-02-30').isValid();;false
157# Date comparison operators
158d('2023-10-15') == d('2023-10-15');;true
159d('2023-10-15') == d('2023-10-16');;false
160d('2023-10-15') != d('2023-10-16');;true
161d('2023-10-15') != d('2023-10-15');;false
162d('2023-10-15') < d('2023-10-16');;true
163d('2023-10-15') < d('2023-10-15');;false
164d('2023-10-15') <= d('2023-10-15');;true
165d('2023-10-16') <= d('2023-10-15');;false
166d('2023-10-16') > d('2023-10-15');;true
167d('2023-10-15') > d('2023-10-15');;false
168d('2023-10-15') >= d('2023-10-15');;true
169d('2023-10-15') >= d('2023-10-16');;false
170# Date range operators
171d('2023-10-15') in [d('2023-10-01')..d('2023-10-31')];;true
172d('2023-10-01') in [d('2023-10-01')..d('2023-10-31')];;true
173d('2023-10-31') in [d('2023-10-01')..d('2023-10-31')];;true
174d('2023-09-30') in [d('2023-10-01')..d('2023-10-31')];;false
175d('2023-11-01') in [d('2023-10-01')..d('2023-10-31')];;false
176d('2023-10-15') in (d('2023-10-01')..d('2023-10-31'));;true
177d('2023-10-01') in (d('2023-10-01')..d('2023-10-31'));;false
178d('2023-10-31') in (d('2023-10-01')..d('2023-10-31'));;false
179d('2023-10-02') in (d('2023-10-01')..d('2023-10-31'));;true
180d('2023-10-30') in (d('2023-10-01')..d('2023-10-31'));;true
181d('2023-10-15') in [d('2023-10-01')..d('2023-10-31'));;true
182d('2023-10-01') in [d('2023-10-01')..d('2023-10-31'));;true
183d('2023-10-31') in [d('2023-10-01')..d('2023-10-31'));;false
184d('2023-10-30') in [d('2023-10-01')..d('2023-10-31'));;true
185d('2023-10-15') in (d('2023-10-01')..d('2023-10-31')];;true
186d('2023-10-01') in (d('2023-10-01')..d('2023-10-31')];;false
187d('2023-10-31') in (d('2023-10-01')..d('2023-10-31')];;true
188d('2023-10-02') in (d('2023-10-01')..d('2023-10-31')];;true
189d('2023-10-15') not in [d('2023-10-01')..d('2023-10-31')];;false
190d('2023-09-30') not in [d('2023-10-01')..d('2023-10-31')];;true
191d('2023-11-01') not in [d('2023-10-01')..d('2023-10-31')];;true
192d('2023-10-01') not in (d('2023-10-01')..d('2023-10-31'));;true
193d('2023-10-31') not in (d('2023-10-01')..d('2023-10-31'));;true
194d('2023-10-15') not in (d('2023-10-01')..d('2023-10-31'));;false
195d('2023-10-31') not in [d('2023-10-01')..d('2023-10-31'));;true
196d('2023-10-01') not in (d('2023-10-01')..d('2023-10-31')];;true
197min([d('2023-01-15'), d('2023-03-20'), d('2023-02-10')]);;'2023-01-15T00:00:00Z'
198max([d('2023-01-15'), d('2023-03-20'), d('2023-02-10')]);;'2023-03-20T00:00:00Z'
199min([d('2023-10-15'), d('2023-10-01'), d('2023-10-31')]);;'2023-10-01T00:00:00Z'
200max([d('2023-10-15'), d('2023-10-01'), d('2023-10-31')]);;'2023-10-31T00:00:00Z'
201min([d('2023-10-15T10:30:00Z'), d('2023-10-15T08:15:00Z'), d('2023-10-15T14:45:00Z')]);;'2023-10-15T08:15:00Z'
202max([d('2023-10-15T10:30:00Z'), d('2023-10-15T08:15:00Z'), d('2023-10-15T14:45:00Z')]);;'2023-10-15T14:45:00Z'
203min([d('2022-12-31'), d('2023-01-01'), d('2024-01-01')]);;'2022-12-31T00:00:00Z'
204max([d('2022-12-31'), d('2023-01-01'), d('2024-01-01')]);;'2024-01-01T00:00:00Z'
205min([d('2023-10-15'), d('2023-10-15'), d('2023-10-15')]);;'2023-10-15T00:00:00Z'
206max([d('2023-10-15'), d('2023-10-15'), d('2023-10-15')]);;'2023-10-15T00:00:00Z'
207min([d('2023-10-15')]);;'2023-10-15T00:00:00Z'
208max([d('2023-10-15')]);;'2023-10-15T00:00:00Z'
209min([d('2023-10-15T10:00:00Z'), d('2023-10-15T12:00:00Z')]);;'2023-10-15T10:00:00Z'
210max([d('2023-10-15T10:00:00Z'), d('2023-10-15T12:00:00Z')]);;'2023-10-15T12:00:00Z'
211min([d('1900-01-01'), d('2000-01-01'), d('1950-06-15')]);;'1900-01-01T00:00:00Z'
212max([d('1900-01-01'), d('2000-01-01'), d('1950-06-15')]);;'2000-01-01T00:00:00Z'
213min([d('2024-02-29'), d('2023-02-28'), d('2024-03-01')]);;'2023-02-28T00:00:00Z'
214max([d('2024-02-29'), d('2023-02-28'), d('2024-03-01')]);;'2024-03-01T00:00:00Z'
215min([d('2023-01-31'), d('2023-02-28'), d('2023-03-31')]);;'2023-01-31T00:00:00Z'
216max([d('2023-01-31'), d('2023-02-28'), d('2023-03-31')]);;'2023-03-31T00:00:00Z'
217min([d('2023-10-15').add(1, 'd'), d('2023-10-15').sub(1, 'd'), d('2023-10-15')]);;'2023-10-14T00:00:00Z'
218max([d('2023-10-15').add(1, 'd'), d('2023-10-15').sub(1, 'd'), d('2023-10-15')]);;'2023-10-16T00:00:00Z'
219min([d('2023-01-01'), d('2023-12-31')]).isBefore(d('2023-06-01'));;true
220max([d('2023-01-01'), d('2023-12-31')]).isAfter(d('2023-06-01'));;true