Ino DateTime Custom
Stamp your files with a timestamp built exactly how you want it
- datetime
Timestamps are the boring glue that keeps batch workflows from colliding. Run a generation ten times and save the results - without a unique string in the filename, every run overwrites the last one. Ino DateTime Custom builds that timestamp string for you: it returns the current date and time formatted to your spec, with each component individually toggleable. The README lists it as "Returns a customizable datetime string with selectable components and separators," and that's exactly what it does.
Wire the datetime STRING output into a filename, a save node, or any string builder, and suddenly every run lands in its own file. It's the time-helper you reach for when the plain ISO format isn't the shape you want.
How it works
The node reads the clock at execution, then assembles the string from the components you've switched on. Date parts (year, month, day) get joined by date_sep; time parts (hour, minute, second) by time_sep; and the two groups are joined by datetime_sep. Anything you toggle off simply drops out of the string. One detail worth knowing: it uses your local machine time (datetime.now()), not UTC - the pack's other date node, Ino DateTime Simple, is the UTC/ISO one. So this is the choice for human-friendly local timestamps.
The inputs that matter
- seed - present for the pack's "control after generate" convention; the value doesn't shape the output, it's just there to fit the family pattern.
- include_year / include_month / include_day / include_hour / include_minute / include_second - the six toggles that decide what's in the string. All default on.
- date_sep / datetime_sep / time_sep - the separators. Defaults are
-,-,-, which gives you2026-08-16-14-35-22. That works but reads poorly; most people setdatetime_septo a space andtime_septo:for2026-08-16 14:35:22.
Output: datetime - the assembled STRING.
Where it wires in
The classic use is file naming: timestamp + batch name into a save node so each run is unique and sortable. It's also handy for logging and for making workflow runs auditable - stick the datetime string in a JSON log or a save-text node and you've got a record of when each pass ran.
Installing it
Part of ComfyUI-InoNodes. ComfyUI Manager → search "ComfyUI Ino Nodes" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/ComfyUI-InoNodes
cd comfyui_ino_nodes
pip install -r requirements.txt
Restart after. No keys, no models - just the pack's core inopyutils dependency.
Common issues
The usual surprise is the separator defaults: with all three at -, you get 2026-08-16-14-35-22 and think something's broken. It's not - change datetime_sep/time_sep and rerun. Second, if you toggle everything off, you get an empty string and a filename that's all prefix - the node returns "" rather than erroring, so check your toggles before blaming a save node. And don't rely on it for unique-per-run naming inside a single batch pass: the string is generated once per node execution, so multiple items sharing the node get the same stamp. That's what InoIncrementBatchName is for.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| include_year | BOOLEAN | true | — |
| include_month | BOOLEAN | true | — |
| include_day | BOOLEAN | true | — |
| include_hour | BOOLEAN | true | — |
| include_minute | BOOLEAN | true | — |
| include_second | BOOLEAN | true | — |
| date_sep | STRING | - | — |
| datetime_sep | STRING | - | — |
| time_sep | STRING | - | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| datetime | STRING | — |