Persian Calendar

by karfekr
5
4
3
2
1
Score: 53/100

Description

This plugin adds the Solar-Hijri(Jalali) calendar to Obsidian, offering Iranian users a more pleasant journaling experience.

Reviews

No reviews yet.

Stats

123
stars
11,718
downloads
14
forks
47
days
21
days
21
days
9
total PRs
0
open PRs
3
closed PRs
6
merged PRs
72
total issues
5
open issues
67
closed issues
307
commits

Latest Version

21 days ago

Changelog

  • Fix seasonal note generation and lookup

Full Changelog: https://github.com/karfekr/obsidian-persian-calendar/compare/4.8.2...4.8.3

README file from

Github

فارسی / English

"Persian Calendar" Plugin for Obsidian

This plugin adds the Solar Hijri calendar alongside the Gregorian and Lunar Hijri calendars to Obsidian, offering Iranian users a more pleasant journaling experience.

Installation Guide

You can install this plugin by searching for Persian Calendar in Obsidian's Community plugins.

Second method

You can visit the Releases section of this GitHub page, download the plugin's executable files -main.js, manifest.json and styles.css- and move them to the following path:

[Your Vault Address]/.obsidian/plugins/persian-calendar

Guide to the Essential Features

Dynamic Paths and Naming

You can use dynamic placeholders to customize the paths and filenames of your calendar notes.

Placeholder Example Description
jYYYY 1404 Four-digit Jalali year
jYY 04 Two-digit Jalali year
YYYY 2025 Four-digit Gregorian year
YY 25 Two-digit Gregorian year
jQQQQ Autumn Full Jalali season name
jQQ 03 Two-digit Jalali season number
jQ 3 Jalali season number
jMMMM Azar Full Jalali month name
jMMM Aza Abbreviated Jalali month name
jMM 09 Two-digit Jalali month number
jM 9 Jalali month number
MMMM November Full Gregorian month name
MMM Nov Abbreviated Gregorian month name
MM 11 Two-digit Gregorian month number
M 11 Gregorian month number
jDD 05 Two-digit Jalali day of the month
jD 5 Jalali day of the month
DD 06 Two-digit Gregorian day of the month
D 6 Gregorian day of the month

Quick Reference to Calendar Notes

Use @ to insert a link to a calendar note, or @/ to insert the resolved date as plain text without creating a link.

  • Days: امروز، دیروز، فردا، پریروز، پس‌فردا
  • Days of the week: (نام روز جاری)، روز بعد، روز قبل
  • Weeks: این هفته، هفته قبل، هفته بعد
  • Months: این ماه، ماه قبل، ماه بعد
  • Seasons: این فصل، فصل قبل، فصل بعد
  • Years: امسال، سال قبل، سال بعد

You can also select the desired phrase in the text and link it to the corresponding note by executing the related command.

Placeholders

By inserting the following placeholders into your note templates, you can include your desired text in the final result.

By typing {{}} you can receive suggestions for choosing your placeholder.

Daily Note Placeholders

Only replaced in daily notes.

Placeholder Sample Output Description
{{تاریخ شمسی یادداشت}} 1404-11-30 Solar Hijri date of the daily note
{{تاریخ میلادی یادداشت}} 2026-02-19 Gregorian date of the daily note
{{تاریخ قمری یادداشت}} 1447-09-01 Lunar Hijri date of the daily note
{{روز هفته یادداشت}} پنجشنبه (Thursday) Name of the day of the week
{{روز ماه یادداشت}} 30 Day of the month
{{مناسبت یادداشت}} Event text Events of the daily note's date

Weekly Placeholders

Work in daily notes and weekly notes.

Placeholder Sample Output Description
{{هفته یادداشت}} 1404-W49 Week identifier
{{اول هفته}} 2026-02-14 Start date of the week (Gregorian)
{{آخر هفته}} 2026-02-20 End date of the week (Gregorian)

Monthly Placeholders

Work in daily notes and monthly notes.

Placeholder Sample Output Description
{{ماه یادداشت}} 1404-11 Month identifier
{{نام ماه یادداشت}} بهمن (Bahman) Name of the Solar Hijri month
{{اول ماه}} 2026-01-21 Start date of the month (Gregorian)
{{آخر ماه}} 2026-02-19 End date of the month (Gregorian)

Seasonal Placeholders

Work in daily notes, monthly notes, and seasonal notes.

Placeholder Sample Output Description
{{فصل یادداشت}} 1404-S4 Season identifier
{{نام فصل یادداشت}} زمستان (Winter) Name of the season
{{اول فصل}} 2025-12-22 Start date of the season (Gregorian)
{{آخر فصل}} 2026-03-21 End date of the season (Gregorian)

Yearly Placeholders

Work in daily, weekly, monthly, and yearly notes.

Placeholder Sample Output Description
{{سال یادداشت}} 1404 Solar Hijri year
{{اول سال}} 2025-03-21 Start date of the year (Gregorian)
{{آخر سال}} 2026-03-20 End date of the year (Gregorian)

Current Time Placeholders

These always return today's date, regardless of the note type.

Placeholder Sample Output Description
{{تاریخ شمسی جاری}} 1404-11-26 Today's Solar Hijri date
{{تاریخ میلادی جاری}} 2026-02-15 Today's Gregorian date
{{تاریخ قمری جاری}} 1447-08-26 Today's Lunar Hijri date
{{روز هفته جاری}} یکشنبه (Sunday) Name of today's weekday
{{روز ماه جاری}} 26 Today's day of the month
{{هفته جاری}} 1404-W49 Current week identifier
{{نام ماه جاری}} بهمن (Bahman) Name of the current month
{{ماه جاری}} 1404-11 Current month identifier
{{نام فصل جاری}} زمستان (Winter) Name of the current season
{{فصل جاری}} 1404-S4 Current season identifier
{{سال جاری}} 1404 Current year
{{مناسبت جاری}} Event text Today's events

Elapsed and Remaining Days

By default, calculated relative to the daily note's date; if placed in a non-daily note, they use today's date.

Placeholder Sample Output Description
{{روزهای گذشته سال}} 334 Days passed since the beginning of the year
{{روزهای باقیمانده سال}} 31 Days remaining until the end of the year
{{روزهای گذشته فصل}} 58 Days passed since the beginning of the season
{{روزهای باقیمانده فصل}} 31 Days remaining until the end of the season
{{روزهای گذشته ماه}} 28 Days passed since the beginning of the month
{{روزهای باقیمانده ماه}} 2 Days remaining until the end of the month

Using the Dedicated API

This plugin provides a public API so you can use features like date and number conversion in other plugins and scripts (such as DataviewJS or Templater).

const pcApi = app.plugins.getPlugin("persian-calendar").api;

// Number conversion
pcApi.toEnNumber("۱۲۳ تست test"); // "123 تست test"
pcApi.toFaNumber("123 تست test"); // "۱۲۳ تست test"

// Solar Hijri date conversion
pcApi.jalaliToDate(1405, 9, 13); // Equivalent Gregorian date as Date object
pcApi.jalaliToGregorian(1405, 9, 13); // {gy: 2026, gm: 12, gd: 4}
pcApi.jalaliToHijri(1405, 9, 13); // (Iran basis) {hy: 1448, hm: 6, hd: 24}
pcApi.jalaliToHijri(1405, 9, 13, { base: "umalqura" }); // (Umm al-Qura basis) {hy: 1448, hm: 6, hd: 24}
pcApi.jalaliMonthName(9); // آذر (Azar)
pcApi.jalaliMonthName(9, "en"); // Azar
pcApi.seasonName(3); // پاییز (Autumn)
pcApi.seasonName(3, "en"); // Autumn

// Gregorian date conversion
pcApi.dateToGregorian(new Date()); // {gy, gm, gd}
pcApi.gregorianToDate(2026, 12, 4); // Date object
pcApi.gregorianToJalali(2026, 12, 4); // {jy: 1405, jm: 9, jd: 13}
pcApi.gregorianToHijri(2026, 12, 4); // (Iran) {hy: 1448, hm: 6, hd: 24}
pcApi.gregorianToHijri(2026, 12, 4, { base: "umalqura" }); // (Umm al-Qura) {hy: 1448, hm: 6, hd: 24}

// Lunar Hijri date conversion (Iran basis)
pcApi.hijriToDate(1448, 6, 24); // Date object
pcApi.hijriToGregorian(1448, 6, 24); // {gy: 2026, gm: 12, gd: 4}
pcApi.hijriToJalali(1448, 6, 24); // {jy: 1405, jm: 9, jd: 13}

// Lunar Hijri date conversion (Umm al-Qura basis)
pcApi.hijriToDate(1448, 6, 24, { base: "umalqura" }); // Date object
pcApi.hijriToGregorian(1448, 6, 24, { base: "umalqura" }); // {gy: 2026, gm: 12, gd: 4}
pcApi.hijriToJalali(1448, 6, 24, { base: "umalqura" }); // {jy: 1405, jm: 9, jd: 13}

// Events
pcApi.checkHoliday(new Date()); // Is it a holiday? true/false
pcApi.dateToEvents(new Date()); // Array of {title(fa/en), categories, isHolidayInIran}
pcApi.dateToEvents(new Date(), { base: "umalqura" }); // With Umm al-Qura basis

Other Features

  • scales responsively with the sidebar width
  • Display of official Iranian holidays on the calendar
  • Display of Iran's official calendar events and international observances
  • Option to "Open today's daily note on startup," user configurable
  • Customizable display of calendar events
  • Option to create and display seasonal notes, user configurable
  • Choose whether weekly notes use the Gregorian or Jalali week numbering system.
  • For better compatibility with other Gregorian calendar plugins, you can use Gregorian naming for Jalali monthly and yearly notes.
  • Confirmation dialog before creating calendar notes, user configurable
  • Option to set the user interface to Persian or English
  • Ability to configure calendar note templates
  • Ability to set the Lunar Hijri calendar based on Iran's Crescent Committee or Saudi Arabia's Umm al-Qura
  • Option to display the Gregorian or Lunar Hijri calendar as supplementary calendars
  • Ability to use a dedicated date picker when setting a property with type date
  • Users can use this plugin's default font named "Persian Calendar"

Collaboration and Project Participation

This plugin has been developed with love, for non-commercial purposes, and under this license.

You can support our continued efforts in the following ways:

  • Contribute to the development of this plugin
  • Report bugs or suggest a feature for development via the Issues section on this GitHub page
  • Recommend installing and using this plugin to your friends
  • Follow our website and Telegram channel

Website Telegram Channel Telegram Group