Format tokens are placeholders you use in custom display format strings.
| Token | Description |
|---|
Y | Year (541, 2026) |
YY | Year, 2-digit (26 from 2026) |
YYYY | Year, 4-digit (2026) |
[yearName] | Named year (Year of the Dragon). Empty if unnamed |
| Token | Description |
|---|
M | Month index (1, 6, 12) |
MM | Month index, 2-digit (01, 06, 12) |
MMM | Month short (Jan, Jun, Dec) |
MMMM | Month full (January, December) |
Mo | Month ordinal (1st, 6th, 12th) |
| Token | Description |
|---|
D | Day of month (1, 15, 31) |
DD | Day of month, 2-digit (01, 15, 31) |
Do | Day ordinal (1st, 15th, 31st) |
DDD | Day of year, 3-digit (001, 166, 365) |
[namedDay] | Named day (Midsummer). Empty if the date has no named day |
[namedDayAbbr] | Named day, abbreviated (Mid) |
| Token | Description |
|---|
EEEE | Weekday full (Monday, Tuesday) |
EEE | Weekday short (Mon, Tue, Wed) |
EE | Weekday short (Mon, Tue, Wed) |
E | Weekday short (Mon, Tue, Wed) |
EEEEE | Weekday narrow (M, T, W) |
e | Weekday index (0, 1, 2, 3, 4, 5, 6) |
dddd | Weekday full (Monday, Tuesday) |
ddd | Weekday short (Mon, Tue, Wed) |
dd | Weekday short, 2-letter (Mo, Tu, We) |
d | Weekday index (0, 1, 2, 3, 4, 5, 6) |
A bare d renders the weekday index. Wrap a literal d in square brackets to keep it out of the token match.
| Token | Description |
|---|
w | Week of year (1, 26, 52) |
ww | Week of year, 2-digit (01, 26, 52) |
W | Week of month (1, 2, 3, 4, 5) |
[namedWeek] | Named week name (Week of the Wolf) |
[namedWeekAbbr] | Named week abbreviation |
| Token | Description |
|---|
H | Hour 24h (0, 14, 23) |
HH | Hour 24h, 2-digit (00, 14, 23) |
h | Hour 12h (1, 2, 12) |
hh | Hour 12h, 2-digit (01, 02, 12) |
m | Minute (0, 30, 59) |
mm | Minute, 2-digit (00, 30, 59) |
s | Second (0, 30, 59) |
ss | Second, 2-digit (00, 30, 59) |
A | Meridiem abbreviation (AM, PM) |
a | Meridiem abbreviation, lowercase (am, pm) |
[meridiemFull] | Full meridiem label (Ante Meridiem, Sunward) |
| Token | Description |
|---|
GGGG | Era full (Anno Domini) |
GGG | Era short (AD, BC) |
GG | Era short (AD, BC) |
G | Era short (AD, BC) |
[era] | Era full, same value as GGGG |
[eraAbbr] | Era short, same value as GGG |
[yearInEra] | Year within era (1, 541) |
[era=N] | Full name of the Nth matching era (0-indexed) |
[eraAbbr=N] | Abbreviation of the Nth matching era (0-indexed) |
[yearInEra=N] | Year within the Nth matching era (0-indexed) |
[yearInEraOrdinal] | Year within era, ordinal (1st, 541st) |
[yearInEraOrdinal=N] | Ordinal year within the Nth matching era (0-indexed) |
| Token | Description |
|---|
QQQQ | Season full (Spring, Summer) |
QQQ | Season short (Spr, Sum, Aut, Win) |
QQ | Season index, 2-digit (01, 02, 03, 04) |
Q | Season index (1, 2, 3, 4) |
[season] | Season full, same value as QQQQ |
[seasonAbbr] | Season short, same value as QQQ |
zzzz | Climate zone full (Temperate, Tropical) |
z | Climate zone short (Tem, Tro) |
| Token | Description |
|---|
[moon] | Moon phase name of the first moon (Full Moon, New Moon) |
[moon=N] | Moon phase name of a specific moon by 0-indexed position or name ([moon=1], [moon='Celene']) |
[moonIcon] | Moon phase icon of the first moon |
[moonIcon=N] | Moon phase icon of a specific moon by 0-indexed position or name ([moonIcon=0], [moonIcon='Luna']) |
[ch] | Canonical hour (Matins, Vespers) |
[chAbbr] | Canonical hour short (Mat, Ves) |
[cycle] | Cycle number (1, 2, 3) |
[cycleYear] | Cycle number, same value as [cycle] |
[cycleName] | Cycle name |
[cycleRoman] | Cycle roman numeral (I, II, III) |
[cycle=N] | Nth cycle number (0-indexed, for multiple cycles) |
[cycleName=N] | Nth cycle name (0-indexed) |
[cycleRoman=N] | Nth cycle roman numeral (0-indexed) |
[approxTime] | Approximate time (Dawn, Noon, Dusk) |
[approxDate] | Approximate date (Early Spring) |
With Hide Moons From Players enabled, moon icons are stripped from formatted output for players. A moon marked hidden in the Calendar Editor produces empty [moon] and [moonIcon] output for players.
Combine tokens to build custom formats:
D MMM → 15 Jan
D MMMM, Y → 15 January, 2026
EEEE, D MMMM Y → Thursday, 15 January 2026
HH:mm → 14:30
h:mm A → 2:30 PM
Use square brackets [] to include literal text:
[Year of] YYYY → Year of 2026
[The] Do [of] MMMM → The 5th of January
Bracketed text that matches one of the bracketed token names above resolves as that token. Anything else inside the brackets is passed through, letter tokens included.
Tokens are case sensitive. A letter run that matches no token is left in the output as written.
Curly braces {} work anywhere square brackets do. {yearName} and [yearName] resolve identically. Unbalanced or empty braces are rejected the same way as unbalanced or empty square brackets.
A pipe | inside a bracket token sets a fallback for an empty primary value:
[yearName|YYYY] → the year name if defined, otherwise the 4-digit year
[namedWeek|w] → the named week if defined, otherwise the week number
[namedDay|Do] → the named day if defined, otherwise the day ordinal
[era|] → the era name if defined, otherwise nothing
The value before the pipe must be a bracket token. [YYYY|Y] always renders the fallback, because YYYY is not one. The value after the pipe accepts either kind.
| Preset | Description |
|---|
off | Hide the element. Offered only for the HUD date display and the Time Keeper date display, where it reads Hidden |
calendarDefault | Use the active calendar’s built-in format |
custom | User-defined format string |
| Preset | Description |
|---|
approxDate | Approximate date (Mid-Summer) |
approxTime | Approximate time of day (Afternoon) |
approxDateTime | Approximate date and time (Mid-Summer, Afternoon) |
| Preset | Format | Example |
|---|
dateShort | D MMM | 5 Jan |
dateMedium | D MMMM | 5 January |
dateLong | D MMMM, Y | 5 January, 2026 |
dateFull | EEEE, D MMMM Y | Monday, 5 January 2026 |
| Preset | Format | Example |
|---|
dateUS | MMMM D, Y | January 5, 2026 |
dateUSFull | EEEE, MMMM D, Y | Monday, January 5, 2026 |
dateISO | YYYY-MM-DD | 2026-01-05 |
dateNumericUS | MM/DD/YYYY | 01/05/2026 |
dateNumericEU | DD/MM/YYYY | 05/01/2026 |
| Preset | Format | Example |
|---|
ordinal | Do of MMMM | 5th of January |
ordinalLong | Do of MMMM, Y | 5th of January, 2026 |
ordinalEra | Do of MMMM, Y GGGG | 5th of January, 2026 Age of Heroes |
ordinalFull | EEEE, Do of MMMM, Y GGGG | Monday, 5th of January, 2026 Age of Heroes |
seasonDate | QQQQ, Do of MMMM | Winter, 5th of January |
| Preset | Format | Example |
|---|
weekHeader | [Week] W [of] MMMM, Y | Week 3 of January, 2026 |
yearOnly | Y | 2026 |
yearEra | Y G | 2026 AD |
| Preset | Format | Example |
|---|
time12 | h:mm A | 9:30 AM |
time12Sec | h:mm:ss A | 9:30:45 AM |
time24 | HH:mm | 09:30 |
time24Sec | HH:mm:ss | 09:30:45 |
| Preset | Format | Example |
|---|
datetimeShort12 | D MMM, h:mm A | 5 Jan, 9:30 AM |
datetimeShort24 | D MMM, HH:mm | 5 Jan, 09:30 |
datetime12 | D MMMM Y, h:mm A | 5 January 2026, 9:30 AM |
datetime24 | D MMMM Y, HH:mm | 5 January 2026, 09:30 |
Click the help icon next to any Display Formats section in the Settings Panel, or next to Date Formats in the Calendar Editor’s Display tab. Format fields show a live preview as you type.
The dialog dims the tokens that do not apply to the field you opened it from, so a date field dims the time tokens and a time field dims the date tokens. A Stop Watch field adds a stopwatch group covering the duration tokens and lights that group in place of the rest. The Calendar Editor also shows the stopwatch group, dimmed, with every other token lit.