Skip to Content
🛠 Build🛠 Action StepsDate

Date

The Date step does one thing to a date and hands back the answer. Format it for a person, shift it, pull out one part, measure the gap between two dates, round it, or take the current date.

DockData · ChangeTakesa dateReturnsa date or a number

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 or 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 of the other fields appear:

OperationWhat it does
FormatRenders a date as display text
AddMoves a date forwards
SubtractMoves a date backwards
ExtractPulls out one part: the year, month, weekday…
BetweenMeasures the gap between two dates
RoundSnaps to a whole day, hour, month…
NowTakes the current date and time

Give it the date

Date takes what you are working with, usually a reference such as {{ 1.created_at }}. Write it out as 2026-08-03, 2026-08-03 14:22 or 2026-08-03T14:22:00Z, or use {{ $now }}.

Between also needs Second date.

Fill in the rest

Add and Subtract take How much and a Unit: years through seconds.

Extract takes Part to extract: year, quarter, month as a number or a name, week of the year, day of the month, day of the year, day of the week as a number or a name, hour, minute or second.

Between takes Measure in. The gap is counted in whole units, so 36 hours measured in days answers 1.

Round takes Round to (year, month, week, day, hour or minute) plus a Direction. Down goes back to the start of the unit; up goes forward to the next boundary. A date already sitting on a boundary is left alone either way, and weeks start on Monday.

Choose a format and timezone

Format offers 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), or Custom.

Custom takes a pattern built from these tokens: YYYY YY for the year, MMMM MMM MM M for the month, DD D for the day, dddd ddd for the weekday, HH H hh h for the hour, mm m for minutes, ss s for seconds, and A a for am/pm. Anything in [square brackets] is written out as-is, so [Due] DD MMM gives Due 03 Aug.

Timezone matters whenever a date crosses midnight for somebody. Set it to the timezone the reader is in, not the one the server is in.

If the incoming date is in an unusual shape, use Input format to say how to read it. Without it, Glow makes a sensible guess, which is right for ISO dates and ambiguous for things like 03/04/2026.

What it passes on

Two keys mean the same thing on every operation, so learn them once:

ReferenceWhat it holds
{{ N.date }}The machine-readable instant, for another step
{{ N.formatted }}The display text, for a person to read

Use formatted in a message and date when another step needs to work with it.

{{ N.result }} is the operation’s primary answer, and what kind of thing it is depends on the operation: an instant from Format, a number from Extract or Between. {{ N.resultType }} names that kind (date, text or number), so one look tells you what you are about to reference.

Extract and Between have no instant to give, so date and formatted are absent on those two rather than holding something misleading. A reference to a key that is not there fails visibly instead of returning a plausible wrong value.

Operationresult isdate and formatted
Format, Add, Subtract, Round, Nowan instantpresent
Extracta numberabsent
Betweena numberabsent

The step also publishes the operation and timezone it used, so a stored run can be read back later without opening the panel.

Examples to copy

A due date thirty days out

What to do: Add · Date: {{ 1.invoice_date }} · How much: 30 · Unit: days.

Put {{ N.formatted }} in the email and {{ N.date }} wherever another step needs the date itself.

How old is this ticket?

What to do: Between · Date: {{ 2.created_at }} · Second date: {{ $now }} · Measure in: days.

Follow it with a Condition on {{ N.result }} to escalate anything past your SLA.

Only run on weekdays

What to do: Extract · Part to extract: Day of the week (number).

Days are numbered the international way: Monday is 1 and Sunday is 7. A Condition on {{ N.result }} set to is less than 6 therefore runs on weekdays only.

The start of this month

What to do: Round · Round to: month · Direction: down.

Useful as the “from” date of a monthly report.

What’s Next?