پکیج jdatetime - کار با تاریخ شمسی در پایتون

امیرحسین بیگدلو July 2026

اگر در حال توسعه یک برنامه پایتون یا جنگو هستید، کار با تاریخ و زمان یکی از مهمترین عملیات هایی خواهد بود که به آن احتیاج دارید. ماژول unittest پایتون یک ماژول کامل برای عملیات های مختلف کار با تاریخ و زمان است. اما اگر نیاز به کار با تاریخ شمسی در پایتون داشته باشید ماژول unittest پایتون نمیتواند نیاز شما را پوشش دهد.

برای کار با تاریخ شمسی در پایتون پکیج های مختلفی مثل persiantools یا jdatetime وجود دارد. در این ویدیو با ماژول Jdatetime آشنا خواهید شد که برای کار با تاریخ شمسی در پایتون استفاده میشود. پکیج jdatetime یکی از بهترین ابزارهای پایتون برای مدیریت تقویم جلالی است مانند ایجاد تاریخ شمسی، تبدیل تاریخ میلادی به شمسی و بالعکس، فرمت بندی تاریخ و انجام محاسبات زمانی را در اختیار شما قرار میدهد. در این آموزش با مثال های کاربردی به شکل کامل با کتابخانه jdatetime پایتون آشنا خواهید شد.

نکته مهمی که قبل از شروع آموزش باید دقت کنید این است که شما همیشه باید داخل دیتابیس، تاریخ میلادی ذخیره کنید و فقط در زمان نمایش اطلاعات به کاربر،‌ تاریخ میلادی را به تاریخ شمسی تبدیل کنید.

برای نصب پکیج jdatetime میتوانید از دستور زیر استفاده کنید:

pip install jdatetime 

و سپس میتوانید با دستور زیر آن را ایمپورت کنید:

import jdatetime

ویدیو پیشنهادی: آموزش تاریخ با ماژول datetime پایتون

# کلاس های اصلی

دو کلاس مهم در این پکیج وجود دارد که معادل کلاس هایی است که داخل ماژول datetime پایتون هستند:

jdatetime.date            # datetime.date
jdatetime.datetime        # datetime.datetime

ساختار پکیج jdatetime بسیار مشابه ماژول datetime پایتون است.

 

# ساخت تاریخ شمسی پایتون

برای ایجاد کردن تاریخ شمسی در پایتون میتوانید از کلاس date استفاده کنید:

import jdatetime

d = jdatetime.date(1403, 5, 20)
print(d)
# 1405-05-20

بعد از ایجاد کردن یک تاریخ شمسی، میتوانید به اجزای این تاریخ دسترسی پیدا کنید:

print(d.year) # 1405
print(d.month) # 5
print(d.day) # 20

دوره پیشنهادی: دوره آموزش مقدماتی پایتون

# دریافت تاریخ شمسی امروز

برای گرفتن تاریخ شمسی امروز میتوانید از داخل ماژول jdatetime متد today را صدا بزنید. اگر متد today را از کلاس date صدا بزنید فقط تاریخ ایجاد می شود. اما اگر متد today را از کلاس datetime صدا بزنید، علاوه بر تاریخ، زمان هم ایجاد خواهد شد:

>>> jdatetime.datetime.today()
1405-04-11 16:25:41


jdatetime.date.today()
1405-04-11

 

# تبدیل تاریخ میلادی به شمسی در پایتون

برای تبدیل تاریخ میلادی به شمسی میتوانید از متد fromgregorian استفاده کنید. اگر فقط بخواهید تاریخ میلادی را به شمسی تبدیل کنید میتوانید از کلاس date استفاده کنید:

import datetime
import jdatetime

g = datetime.date(2026, 7, 2)
j = jdatetime.date.fromgregorian(date=g)

print(j) # 1405-04-11

 

اگر بخواهید تاریخ میلادی را همراه زمان به شمسی تبدیل کنید میتوانید از کلاس datetime استفاده کنید:

g = datetime.datetime.now()
j = jdatetime.datetime.fromgregorian(datetime=g)

print(j)

ویدیو پیشنهادی: ویدیو آموزش ماژول calendar در پایتون

# تبدیل تاریخ شمسی به میلادی در پایتون

برای تبدیل تاریخ شمسی به میلادی در پایتون میتوانید از متد togregorian استفاده کنید. اگر از کلاس date استفاده کنید فقط تاریخ را خواهید داشت:

j = jdatetime.date(1405, 4, 11)
g = j.togregorian()
print(g) # 2026-07-02

اما اگر از کلاس datetime استفاده کنید،‌ علاوه بر تاریخ، زمان را هم خواهید داشت:

j = jdatetime.datetime.now()
print(j.togregorian())

 

# تغییر فرمت تاریخ شمسی

برای تغییر فرمت پیشفرض تاریخ شمسی میتوانید از تابع strftime استفاده کنید. به مثال زیر دقت کنید:

today = jdatetime.date.today()
print(today.strftime("%Y/%m/%d")) # 1405/04/11

همچنین میتوانید زمان را هم فرمت کنید:

now = jdatetime.datetime.now()
print(now.strftime("%Y/%m/%d %H:%M:%S"))

برای نمایش روز هفته میتوانید به شکل زیر کار کنید:

today = jdatetime.date.today()
print(today.strftime("%A")) # Thursday

یا برای نمایش نام ماه میتوانید به شکل زیر کار کنید:

print(today.strftime("%B")) # Tir

برای کدهای فرمت بیشتر میتوانید از جدول این لینک استفاده کنید.

 

# نمایش فارسی خروجی تاریخ شمسی در پایتون

زمانی که تاریخ شمسی را در خروجی نمایش میدهید، خروجی به زبان انگلیسی است و اگر بخواهید خروجی را با زبان فارسی نمایش دهید میتوانید از Locale استفاده کنید:

import jdatetime

jdatetime.set_locale("fa_IR")
today = jdatetime.datetime.now()

print(today.strftime("%A")) # هبنشجنپ
print(today.strftime("%B")) # ریت

همانطور که میبینید خروجی تاریخ شمسی به شکل فارسی است. البته دقت کنید که اگر از ویندوز استفاده میکنید، باید به جای fa_IR از Persian_Iran استفاده کنید.

 

# مقایسه تاریخ های شمسی در پایتون

شما میتوانید با علامت های مقایسه ای تاریخ های شمسی را مقایسه کنید:

d1 = jdatetime.date(1403, 1, 1)
d2 = jdatetime.date(1403, 2, 1)

print(d1 < d2)
print(d1 > d2)
print(d1 == d2)

ویدیوهای مشابه



ارسال نظر


فعلا نظری برای نمایش وجود ندارد
مونگارد