Natural Language Dates (Revived)
approvedby amato21
Forked from Natural Language Dates
Auto-complete dates and times naturally (@today, @dans 20 min). Now with multilingual support and hybrid links. - This plugin has not been manually reviewed by Obsidian staff.
Natural Language Dates (Revived) π
This is a revived and improved version of the popular "Natural Language Dates" plugin for Obsidian. It brings the plugin back to life with a modern engine, true multilingual support, and smarter time handling.
Supported Languages
Enable any combination in Settings β Natural Language Dates β Language settings. All examples in this README use English, but every feature below works the same way in each of these:
| Language | Status |
|---|---|
| English | Full support |
| French | Full support |
| Spanish | Full support |
| Italian | Full support |
| Russian | Full support |
| Ukrainian | Full support |
| Chinese (Traditional & Simplified) | Partially supported |
| German | Partially supported |
| Portuguese | Partially supported |
| Japanese | Full support |
| Korean | Partially supported |
| Dutch | Under development |
You can enable several languages at once β the autosuggest and parser understand all of them simultaneously.
Korean support (μ€λ, λ΄μΌ, λ€μ μ£Ό μμμΌ, 3μΌ ν...) reuses vocabulary from CreamNuts' nldates-obsidian-korean β many thanks for that work. As with the other "partially supported" languages, chrono-node has no Korean parser to fall back on, so some combined phrasings (e.g. a weekday together with a specific time, or date ranges) aren't recognized yet (#40).
How to Install
Via Obsidian Community Plugins (Recommended)
- Open Settings β Community plugins in Obsidian.
- Click Browse and search for "Natural Language Dates (Revived)".
- Install and enable it.
Via BRAT (for the latest beta builds)
To get updates ahead of the official release, use the BRAT plugin:
- Install BRAT from the Community Plugins store.
- Add a Beta Plugin with this URL:
https://github.com/Amato21/nldates-revived - Enjoy!
Usage
Date Autosuggest
Type @ (default trigger) followed by a natural date.
-
@todayβ[[2024-12-30]] -
@tomorrowβ[[2024-12-31]] -
@in 20 minutesβ14:30(smart formatting: only time when it's today!) -
@in 2 hoursβ16:30(smart formatting for today) -
@in 2 weeks and 3 daysβ[[2025-01-22]](full date for future dates) -
@next Monday at 3pmβ[[2025-01-06]] 15:00 -
Weekday shortcuts:
@Mondayβ next Monday (or today if it's Monday)@this Mondayβ Monday of the current week (even if already elapsed)@last Mondayβ Monday of the previous week@next Mondayβ Monday of the next week- Abbreviations also work:
@mon,@tue,@wed,@thu,@fri,@sat,@sun
-
@3 minutes agoβ14:27(past expressions, in every supported language) -
@2 hours agoβ12:30 -
@from Monday to Fridayβ[[2025-01-06]], [[2025-01-07]], [[2025-01-08]], [[2025-01-09]], [[2025-01-10]] -
@next weekβ[[2025-01-06]], [[2025-01-07]], [[2025-01-08]], [[2025-01-09]], [[2025-01-10]], [[2025-01-11]], [[2025-01-12]] -
Complex date expressions:
@the 15th of next monthβ[[2025-02-15]]@last day of monthβ last day of the current month@last day of next monthβ last day of next month@first Monday of monthβ first Monday of the current month@first Monday of next monthβ first Monday of next month@last Friday of next monthβ last Friday of next month- Works with all prefixes (
next,last,this) and their translations in every supported language
-
Time shortcuts: type the word for "time" in one of your enabled languages to see quick time-adjustment suggestions β
@Timein English,@heurein French, and so on for each language:Time:Nowβ inserts the current time (e.g.14:30)Time:+15 minutes/Time:+1 hourβ time 15 minutes / 1 hour from nowTime:-15 minutes/Time:-1 hourβ time 15 minutes / 1 hour ago- These insert just the time, with no date or link β handy for logging timestamps
- Only works for a language you've actually enabled in settings β
@Timewon't trigger anything if only French is enabled, only@heurewill
Each suggestion in the dropdown shows a preview of the resolved date or time next to it (e.g. typing @next monday shows "Next Monday" with 2025-01-06 beside it), so you can see exactly what will be inserted before you pick one.
Press Shift + Enter to keep the original text as an alias (e.g. [[2024-12-30|today]]). If you type the full word yourself, the alias keeps your exact casing instead of the suggestion's own β handy in languages where the dictionary form is capitalized (French Demain, for instance) but you'd rather see it lowercase in your note. Only completing a partial word falls back to the suggestion's own spelling.
Commands (Ctrl/Cmd + P)
- Parse natural language date: Replaces selected text with a link (e.g. select "tomorrow" -> becomes
[[2024-12-31]]). - Insert the current date and time: Quickly insert a timestamp with both date and time.
- Insert the current date: Inserts only the current date.
- Insert the current time: Inserts only the current time.
- Date Picker: Opens a calendar view to pick a date visually.
Configuration
Go to Settings > Natural Language Dates:
- Languages: Check the languages you want to enable.
- Date Format: How the date part looks (e.g.
YYYY-MM-DD). - Time Format: How the time part looks (e.g.
HH:mm). - Separator: Character between date and time (if used).
- Smart Suggestions: Enable intelligent suggestions (enabled by default)
- Enable smart suggestions: Master toggle for all intelligent features
- History-based suggestions: Learn from your frequently used date patterns. Ranking favors what you've picked recently, not just most often overall β something you used a lot months ago naturally fades if you haven't reached for it lately, while anything you reuse jumps back to the top.
- Context-based suggestions: Detect dates already mentioned in the current document (within Β±10 lines of the cursor) and suggest them
- Manage history: Opens a list of everything in your suggestion history (most relevant first), with a button to remove any single entry, plus a "Clear all" option (armed on the first click, applied on the second, so it can't be triggered by accident)
- Date Formatting:
- Omit date for short relative expressions: When enabled, short relative expressions for today (e.g.,
@in 15 min,@in 2 hours) will display only the time (e.g.,14:30) instead of[[2024-01-15]] 14:30(enabled by default)
- Omit date for short relative expressions: When enabled, short relative expressions for today (e.g.,
- Periodic Notes: Optional formats for linking to weekly/monthly/quarterly/yearly notes (e.g. used by the Periodic Notes plugin), each empty/disabled by default:
- Week format (e.g.
GGGG-[W]WW), Month format (e.g.YYYY-MM), Quarter format (e.g.YYYY-[Q]Q), Year format (e.g.YYYY) - When set, an expression that resolves to a whole period instead of a single day β
@next week,@this quarter,@Q3,@Q3 2026,@2026-W02β uses that format instead of the daily Date format. Leave a field empty to keep using the daily format for that granularity (and, for weeks specifically, the existing behavior of inserting a link for every day of the week). - Recognized in all 12 supported languages:
@next week/@semaine prochaine/@ζ₯ι±/@λ€μ μ£Ό, etc.
- Week format (e.g.
Note: History data is stored in .obsidian/plugins/nldates-revived/history.json and is limited to the 100 most relevant entries for optimal performance.
URI Action
Open (or create) a daily note from outside Obsidian β e.g. from a Shortcuts automation, a script, or another app:
obsidian://nldates?day=tomorrow&newPane=yes
day accepts any natural language expression the plugin understands. newPane (yes/no, default yes) controls whether the note opens in a new pane.
π§ For Developers
Building an integration against the plugin's TypeScript API? See API.md for the complete reference: accessing the plugin instance, all public methods and types, and usage examples.
π Credits & Acknowledgements
This project stands on the shoulders of giants. Huge thanks to:
- Argentina Ortega Sainz (argenos): The original creator of this plugin. This revival is based on their excellent work.
- RensOliemans: For the major contributions and foundational work on the multilingual support.
- CreamNuts: For nldates-obsidian-korean, whose vocabulary this plugin's Korean support is built on.
- Amato21: Maintainer of this "Revived" version.
Powered by the chrono-node library.
Changelog
See CHANGELOG.md for the full version history.
Development Troubleshooting
If npm install fails with an ENOTEMPTY rename error, remove node_modules/ and retry. If you see 403 Forbidden while fetching packages, confirm that your registry access is allowed by your network or security policy before retrying. This helps avoid stalled installs when running the project locally. Keep any local install logs out of version control.
Maintenance & Community
This project is open source (MIT License). The primary goal is to provide a working, reliable tool for the Obsidian community.
Community First: If this repository becomes inactive or unmaintained in the future, please feel free to fork it and take over maintenance immediatelyβno permission needed! The community's needs come first, and we'd be delighted to see the project continue to evolve and improve.
Your contributions, forks, and improvements are always welcome! π
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.