Notion formulas can transform raw date values into readable text for reports, task boards, or project dashboards. Without formatting, a date property like Deadline appears as a full timestamp that is hard to scan. This article explains how to use the formatDate() function to convert dates into custom string formats. You will learn the syntax, available tokens, and practical examples for day-month-year, weekday, and relative date strings.
Key Takeaways: Formatting Dates in Notion Formulas
- formatDate() function: Converts a date property into a string using tokens like
YYYY,MM,DD, anddddd. - Supported tokens: Use
Mfor month number,MMMfor abbreviated month name,ddddfor full weekday name, andh:mm Afor 12-hour time. - Locale behavior:
formatDate()uses the workspace language setting; tokens likeMMMMproduce localized month names automatically.
What the formatDate() Function Does and What You Need Before Using It
The formatDate() function takes two arguments: a date value and a format string. It returns the date as plain text. The date value can come from a date property, a now() function, a dateAdd() result, or any expression that produces a date type.
The format string uses tokens that represent parts of a date. These tokens are case-sensitive. For example, YYYY gives a four-digit year while YY gives a two-digit year. Notion follows the Moment.js token syntax for most patterns. A full list of supported tokens is available in the Notion formula reference, but the most common ones are covered in this article.
Before writing a formula, ensure the property you want to format is a date type. If the property is a text string that looks like a date, you must first convert it using parseDate(). The formatDate() function will not work on non-date values and will return an error.
Steps to Write a Date Format Formula in a Notion Property
These steps assume you already have a database with a date property. If you do not have one, create a new property of type Date first.
- Open the database and add a Formula property
Click the + button in the last column header of your database. Select Formula from the property type list. Name the property Formatted Date or any name you prefer. - Click the formula cell to open the formula editor
In the new column, click any cell. The formula editor panel opens on the right side of the screen. This is where you type the formatDate() expression. - Type the basic formatDate() syntax
In the editor, enter:formatDate(prop("Deadline"), "MM/DD/YYYY")
Replace Deadline with the exact name of your date property. The second argument is the format string. This example produces something like 04/15/2025. - Test the formula and adjust the format string
Click Done or press Ctrl + Enter (Windows) or Cmd + Enter (Mac). The cell displays the formatted date. If the result looks wrong, double-check the property name and the token casing. - Add more tokens for weekday, time, or relative strings
To include the weekday, change the format string to"dddd, MMMM D, YYYY". This outputs Tuesday, April 15, 2025. For a 12-hour time, addh:mm A:"MM/DD/YYYY h:mm A"produces 04/15/2025 3:30 PM.
Using formatDate with now() for Current Date
You can format the current date and time without a date property. Use now() as the first argument. For example:formatDate(now(), "dddd, MMMM D, YYYY")
This formula updates every time the page is refreshed. It is useful for a timestamp that shows when the database was last viewed.
Formatting Relative Dates with formatDate
Notion does not have a built-in relative date token like “2 days ago” inside formatDate(). To create a relative date string, combine formatDate() with dateBetween() and conditional logic. Example formula:if(dateBetween(now(), prop("Deadline"), "days") == 0, "Today", formatDate(prop("Deadline"), "MMM D"))
This shows Today when the deadline is the current day, otherwise it shows the abbreviated month and day.
Common Mistakes and Limitations When Formatting Dates
formatDate Returns an Error Because the Property Is Not a Date
If the property type is Text or Select, formatDate() will not work. Check the property type in the database settings. If the value is a text string that looks like a date, use parseDate() first:formatDate(parseDate(prop("Date Text")), "MM/DD/YYYY")
This converts the text to a date before formatting.
The Formatted Date Shows the Wrong Month or Day
This usually happens when the token casing is incorrect. MM gives the month number (01 to 12). mm gives minutes and is not a valid month token. Use M for a single-digit month (1 to 12) or MM for a zero-padded month. Similarly, use DD for zero-padded day and D for single-digit day.
The Weekday Name Appears in the Wrong Language
Notion uses the workspace language setting to determine the locale for weekday and month names. To change the language, go to Settings & Members > Language & Region > Language. Changing this setting affects all users in the workspace. There is no token to override the locale inside a single formula.
formatDate Produces a Timestamp Instead of a Clean Date
If the format string is missing or invalid, formatDate() may return the default ISO timestamp. Always enclose the format string in double quotes. A missing closing quote or a typo in a token will cause the formula to fail or return unexpected text.
Common formatDate Tokens Compared
| Token | Output (Example) | Notes |
|---|---|---|
| YYYY | 2025 | Four-digit year |
| YY | 25 | Two-digit year |
| MMMM | April | Full month name (locale-aware) |
| MMM | Apr | Abbreviated month name |
| MM | 04 | Zero-padded month number |
| M | 4 | Single-digit month number |
| DD | 15 | Zero-padded day of month |
| D | 15 | Single-digit day of month (same as DD for two-digit days) |
| dddd | Tuesday | Full weekday name (locale-aware) |
| ddd | Tue | Abbreviated weekday name |
| h | 3 | 12-hour hour without padding |
| hh | 03 | 12-hour hour with zero padding |
| mm | 30 | Minutes with zero padding |
| A | PM | AM / PM uppercase |
Use this table as a quick reference when building your format string. Combine tokens with separators like slashes, dashes, spaces, or colons to create the exact output you need.
You can now format any date property in Notion using the formatDate() function with custom tokens. Start by writing a simple MM/DD/YYYY format, then expand to include weekday names or time components. For advanced use cases, combine formatDate() with dateBetween() and conditional if() statements to show relative labels like Overdue or Due Tomorrow. Remember that the workspace language controls the locale for month and weekday names, so verify the language setting if the output appears in an unexpected language.