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

4.8 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
29# Date getters
30d('2023-10-15').year();;2023
31d('2023-10-15').month();;10
32d('2023-10-15').day();;15
33d('2023-10-15').weekday();;0
34d('2023-10-15').hour();;0
35d('2023-10-15').minute();;0
36d('2023-10-15').second();;0
37d('2023-10-15').dayOfYear();;288
38d('2023-01-01').dayOfYear();;1
39d('2023-12-31').dayOfYear();;365
40d('2024-12-31').dayOfYear();;366
41d('2023-10-15').quarter();;4
42d('2023-01-15').quarter();;1
43d('2023-04-15').quarter();;2
44d('2023-07-15').quarter();;3
45d('2023-10-15').timestamp();;1697328000000
46d('2023-10-15', 'Europe/Berlin').offsetName();;'Europe/Berlin'
47d('2023-10-15', 'America/Los_Angeles').offsetName();;'America/Los_Angeles'
48d('2023-10-15').isLeapYear();;false
49d('2024-10-15').isLeapYear();;true
50d('2000-10-15').isLeapYear();;true
51d('1900-10-15').isLeapYear();;false
52# Date setters
53d('2023-10-15').set(2024, 'year');;'2024-10-15T00:00:00Z'
54d('2023-10-15').set(5, 'month');;'2023-05-15T00:00:00Z'
55d('2023-10-15').set(20, 'day');;'2023-10-20T00:00:00Z'
56d('2023-10-15T10:30:00Z').set(15, 'hour');;'2023-10-15T15:30:00Z'
57d('2023-10-15T10:30:00Z').set(45, 'minute');;'2023-10-15T10:45:00Z'
58d('2023-10-15T10:30:00Z').set(30, 'second');;'2023-10-15T10:30:30Z'
59# Special date checks
60d().isSame(d(), 'day');;true
61d('2023-10-15').startOf('day');;'2023-10-15T00:00:00Z'
62d('2023-10-15T10:30:45Z').startOf('hour');;'2023-10-15T10:00:00Z'
63d('2023-10-15').endOf('day');;'2023-10-15T23:59:59Z'
64d('2023-10-15T10:30:45Z').endOf('hour');;'2023-10-15T10:59:59Z'
65d('2023-10-15').startOf('month');;'2023-10-01T00:00:00Z'
66d('2023-10-15').endOf('month');;'2023-10-31T23:59:59Z'
67d('2023-10-15').startOf('year');;'2023-01-01T00:00:00Z'
68d('2023-10-15').endOf('year');;'2023-12-31T23:59:59Z'
69d('2023-10-15').startOf('week');;'2023-10-09T00:00:00Z'
70d('2023-10-15').endOf('week');;'2023-10-15T23:59:59Z'
71d('2023-10-15').startOf('quarter');;'2023-10-01T00:00:00Z'
72d('2023-10-15').endOf('quarter');;'2023-12-31T23:59:59Z'
73d('2023-03-15').startOf('quarter');;'2023-01-01T00:00:00Z'
74d('2023-03-15').endOf('quarter');;'2023-03-31T23:59:59Z'
75d('2023-06-15').startOf('quarter');;'2023-04-01T00:00:00Z'
76d('2023-06-15').endOf('quarter');;'2023-06-30T23:59:59Z'
77d('2023-09-15').startOf('quarter');;'2023-07-01T00:00:00Z'
78d('2023-09-15').endOf('quarter');;'2023-09-30T23:59:59Z'
79# Timezone operations
80d('2023-10-15T00:00:00Z').tz('America/New_York');;'2023-10-14T20:00:00-04:00'
81d('2023-10-15T00:00:00Z').tz('Europe/London');;'2023-10-15T01:00:00+01:00'
82d('2023-10-15T00:00:00+00:00').tz('UTC');;'2023-10-15T00:00:00Z'
83d('2023-10-15T12:00:00+02:00', 'Etc/GMT-2').tz('UTC');;'2023-10-15T10:00:00Z'
84# Relative date methods
85d().sub(1, 'd').isYesterday();;true
86d().add(1, 'd').isTomorrow();;true
87d('2023-10-15').isToday();;false
88# Difference calculations
89d('2023-10-15').diff(d('2023-10-10'), 'day');;5
90d('2023-10-15T10:00:00Z').diff(d('2023-10-15T08:30:00Z'), 'hour');;1
91d('2023-10-15').diff(d('2023-09-15'), 'month');;1
92d('2023-12-31').diff(d('2023-01-01'), 'year');;0
93d('2023-12-31').diff(d('2022-01-01'), 'year');;1
94# Formatting
95d('2023-10-15').format('%Y-%m-%d');;'2023-10-15'
96d('2023-10-15').format('%Y/%m/%d');;'2023/10/15'
97d('2023-10-15T14:30:45Z').format('%A, %B %d %Y, %H:%M:%S');;'Sunday, October 15 2023, 14:30:45'
98d('2023-10-15T14:30:45Z').format('%a %b %d %H:%M');;'Sun Oct 15 14:30'
99d('2023-10-15T14:30:45Z').format('Day %j of year %Y');;'Day 288 of year 2023'
100d('2023-10-15T14:30:45.123Z').format('%H:%M:%S.%f');;'14:30:45.123000000'
101# Date validations
102d('foo').isValid();;false
103d('2023-13-01').isValid();;false
104d('2023-02-30').isValid();;false