K
Docs
API Reference→Pieces→Time Until
⌛

Time Until

clock.untilThe ClocktowerTime

Counts the time between now and a moment. Ahead if it's still to come, Passed if it's gone. You get whole {{until.days}}, {{until.hours}}, {{until.minutes}} and {{until.seconds}}, words like “3 days, 4 hours and 2 minutes”, and {{until.relative}}, Discord's live countdown.

When to use this
  • →Unix seconds, milliseconds and ISO dates all work — so does {{timestamp}}

On the canvas

This is what Time Until looks like when you place it on your flow. Each field below is something you configure in the inspector panel.

⌛
Time Until
clock.until
Time
timerequired
e.g. 2026-12-25T00:00:00Z or {{row.ends_at}}
asrequired
until
ahead
passed
invalid

Config fields

FieldTypeReqWhat it does
time
e.g. 2026-12-25T00:00:00Z or {{row.ends_at}}
textyesUntil when 📅
as
until
textyesSave it as ✨

Sparks this piece adds

After this piece runs, these values are available as sparks in every node downstream.

{{until.days}}numberWhole days
{{until.hours}}numberWhole hours, in total
{{until.minutes}}numberWhole minutes, in total
{{until.seconds}}numberSeconds, in total
{{until.text}}stringIn words: 3 days, 4 hours and 2 minutes
{{until.short}}stringShort: 3d 4h
{{until.relative}}stringA live Discord countdown
{{until.at}}numberThe moment, as a Unix time

Output ports

aheadStill to come
passedAlready happened — the numbers count the time since
invalidThat wasn't a time
📐

In TypeScript, this would be…

Not something you need to write — just a look at what Kitcord does for you.

TypeScript
const gap = Date.parse("2026-12-25T00:00:00Z") - Date.now();
const days = Math.floor(Math.abs(gap) / 86_400_000); // {{until.days}}
// gap > 0 → Ahead ⏩ ; otherwise Passed ⏪