Date
Use the Date Step to format, shift, round, extract parts from, or compare dates without writing code. Format it for a person, shift it, pull out one part, measure the gap between two dates, round it, or take the current date.
- Use it to
- Format, add or subtract time, round, extract date parts, or measure the gap between two dates
- Find it
- Tools → Data → Transform → Date
- Cost
- 1 Step credit per execution
- Limits
- 7 operations (Format, Add, Subtract, Extract, Between, Round, Now) · Epoch numbers need inline parse_date first
- Output
- {{ N.result }}, {{ N.resultType }}, plus {{ N.date }} and {{ N.formatted }} (or {{ N.exact }} for Between)
- Instead
- Inline date pipes ({{ $now | date_add:7:days | format_date:date_iso }})
Dates are unavoidable in operations work: invoice due dates, SLA windows, “anything older than 30 days”. This step handles them without a trip to the Code editor.
Format or shift dates directly inside fields: You can format, shift, or snap dates directly within any variable reference using Data Transformation:
- Format for reading:
{{ 1.created_at | format_date:date_medium:Europe/Prague }} - Add 30 days:
{{ 1.invoice_date | date_add:30:days }} - Start of month:
{{ 1.timestamp | date_start_of:month }}
Use the dedicated Date canvas step when you need to calculate gaps between dates (Between) for downstream Conditions. It is also useful when multiple steps reuse the computed date.
Setting it up
Add the step
Open Tools in the dock and choose Date.
Pick what to do
What to do decides which fields appear:
| Operation | What it does | Required Fields & Behavior |
|---|---|---|
| Format | Renders a date as display text | Date, Format, Timezone |
| Add | Moves a date forwards | Date, How much, Unit (years through seconds) |
| Subtract | Moves a date backwards | Date, How much, Unit (years through seconds) |
| Extract | Pulls out one part of a date | Date, Part to extract (year, quarter, month number/name, week of year, day of month/year, weekday, hour, minute, second) |
| Between | Measures the gap between two dates | Date, Second date, Measure in (counted in whole units, so 36 hours in days answers 1) |
| Round | Snaps to a unit boundary | Date, Round to (year, month, week, day, hour, minute), Direction (down or up; weeks start on Monday) |
| Now | Takes the current date and time | Format, Timezone |
Give it the date
Date takes a reference such as {{ 1.created_at }}, {{ $now }}, or a date string (2026-08-03, 2026-08-03 14:22, 2026-08-03T14:22:00Z). If the incoming text uses a non-standard shape (such as DD.MM.YYYY), specify Input format so Glow can parse it when automatic parsing fails. A plain number such as a Unix timestamp (1769817600) is rejected directly; convert it inline with {{ 1.timestamp | parse_date:epoch_seconds }} (or epoch_milliseconds) before passing it to Date.
Choose a format and timezone
Set Timezone to the reader’s local timezone whenever a date can cross midnight. Choose a preset Format or select Custom:
Preset Formats
- ISO:
2026-08-03- Day-first:03/08/2026- Month-first:08/03/2026- Long date:3 August 2026- Date and time:2026-08-03 14:22- Long date and time:3 August 2026 at 14:22
What it passes on
{{ N.result }} holds the operation’s primary answer, and {{ N.resultType }} names its type (date, text, or number). The step also publishes operation and timezone:
| Operation | {{ N.result }} | {{ N.date }} & {{ N.formatted }} | Additional Fields |
|---|---|---|---|
| Format | Formatted display text | Present (date = UTC ISO instant, formatted = timezone display) | None |
| Add, Subtract, Round, Now | UTC ISO instant (...Z) | Present (date = UTC ISO instant, formatted = timezone display) | None |
| Extract | Number, or text for a month/weekday name | Absent | {{ N.part }} |
| Between | Whole-unit gap (number) | Absent | {{ N.exact }}, {{ N.unit }}, {{ N.direction }}, {{ N.milliseconds }} |
Examples to copy
| Goal | Configuration | Downstream Reference |
|---|---|---|
| Due date 30 days out | What to do: Add · Date: {{ 1.invoice_date }} · How much: 30 · Unit: days | Use {{ N.formatted }} in emails and {{ N.date }} in API calls. |
| Ticket age (SLA check) | What to do: Between · Date: {{ 2.created_at }} · Second date: {{ $now }} · Measure in: days | Branch on {{ N.result }} in Conditions. |
| Run on weekdays only | What to do: Extract · Part to extract: Day of the week (number) | Monday is 1 and Sunday is 7; check {{ N.result }} is less than 6. |
| Start of current month | What to do: Round · Round to: month · Direction: down | Pass {{ N.date }} as the report’s start timestamp. |
- Run
- Choose Add (30 days) on {{ $now }} and click Run step in Test & Debug
- You should see
- The Output tab shows result and date as the UTC ISO timestamp 30 days ahead, alongside formatted in your chosen timezone.
What’s Next?
- Branch on the answer with Conditions.
- See what
{{ $now }}and{{ $today }}give you in Variable Syntax.