Mayo Time Formatter
Timestamps that stay fresh, in whatever format your filename needs
- string
Mayo Time Formatter outputs the current date and/or time as a clean text string in the format you pick - 22 date formats, 4 time formats, joined by a delimiter of your choice. It's a tiny node, and its entire reason to exist is the sentence in the pack's README: lots of nodes expect time in different formats, and this one normalizes it.
Why you'd reach for it
Date-stamping output filenames is the classic use. SaveImage's filename prefix is a plain text field, but wire this node's string into a dynamic-filename setup and every run lands in a run_2026-08-16_14-32-05 style name instead of the eternal ComfyUI_00001. It's also handy for logging when a generation happened, or pasting a timestamp into a notes/text node for your own records.
The mechanism that matters
This is the part worth understanding, because it's the whole trick. ComfyUI caches node outputs: if nothing about a node changed, it won't re-run it. A naive time node would therefore return the timestamp from the moment the workflow first loaded - frozen forever. Mayo Time Formatter gets around that with IS_CHANGED, which returns datetime.now().timestamp() - a value that's different on every evaluation. That forces ComfyUI to re-execute the node on every queue, so the string is genuinely current.
If you've ever used a timestamp node that went stale, that's the exact mechanism its author forgot. This one has it.
Under the hood it's a friendly-name-to-strftime mapping: "YYYY-MM-DD" → %Y-%m-%d, "Month DD YYYY" → %B %d %Y, and so on. Nothing exotic, just the Python datetime you'd expect.
Inputs
use_date/use_time- booleans; turn a half on and you get just that half.date_format/time_format- the dropdowns, enabled or greyed out to match their toggles.delimiter- the joiner (default_); it only does anything when both date and time are on, and the JS disables it otherwise so you can't set a delimiter that's ignored.
Output is a single string. If both toggles are off, you get an empty string back.
What to know before you rely on it
It's 24-hour time (%H), local timezone - there's no AM/PM and no timezone selector, so don't go hunting for settings that aren't there. The timestamp is captured at execution, which is "now" as far as a workflow run is concerned. And if you're batching, all images in one run share the same string, which is usually what you want for grouping output.
Installing it
Search "Mayo Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Pasu2k/comfyui-mayo-nodes
Then restart ComfyUI. No dependencies, no downloads - pure standard library, so there's nothing extra to break.
It's a one-trick node from a small personal pack, but "give me the current time in the exact format I asked for" is a trick every workflow eventually needs.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| use_date | BOOLEAN | true | — |
| date_format | COMBO | 22 options: YYYY-MM-DD, MM-DD-YYYY, DD-MM-YYYY, YYYYMMDD, MMDDYYYY, DDMMYYYY, +16 | |
| use_time | BOOLEAN | true | — |
| time_format | COMBO | 4 options: HH-MM-SS, HH-MM, HHMMSS, HHMM | |
| delimiter | STRING | _ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string | STRING | — |