قبل به اشتراک گذاری؛ کدت رو تبدیل به یک تصویر حرفه ای کن!
توی باکس پایین بنویسش و روی دکمه «دانلودش کن!» کلیک کن
کار با تاریخ پیشرفته
from datetime import datetime, timedelta
class Tarikh:
def __init__(self, date_str):
# تاریخ ورودی را به فرمت yyyy/mm/dd دریافت کرده و به تاریخ میلادی تبدیل میکند
year, month, day = map(int, date_str.split('/'))
self.date = self.shamsi_to_gregorian(year, month, day)
def shamsi_to_gregorian(self, year, month, day):
# تبدیل تاریخ شمسی به میلادی
# این تابع میتواند با استفاده از کتابخانههای موجود یا الگوریتمهای تبدیل پیادهسازی شود.
# در اینجا از یک تبدیل ساده استفاده میکنیم (توجه: این تبدیل دقیق نیست و فقط برای مثال است).
# برای تبدیل دقیق میتوانید از کتابخانه `jdatetime` استفاده کنید.
# به عنوان مثال:
# import jdatetime
# return jdatetime.JalaliDate(year, month, day).to_gregorian().to_date()
return datetime(year + 621, month, day) # تبدیل ساده برای مثال
def increment(self, days=0, months=0, years=0):
# اضافه کردن روز، ماه و سال به تاریخ
self.date += timedelta(days=days)
if months:
new_month = self.date.month + months
new_year = self.date.year + (new_month - 1) // 12
new_month = new_month % 12 or 12
self.date = self.date.replace(year=new_year, month=new_month)
if years:
self.date = self.date.replace(year=self.date.year + years)
def reduce(self, days=0, months=0, years=0):
# کم کردن روز، ماه و سال از تاریخ
self.increment(days=-days, months=-months, years=-years)
def print(self):
# چاپ تاریخ به فرمت شمسی
year = self.date.year - 621 # تبدیل میلادی به شمسی
month = self.date.month
day = self.date.day
print(f"{year}/{month}/{day}")
# مثال استفاده
mybirthday = Tarikh('1379/12/11')
mybirthday.increment(days=10, months=2, years=1) # tarikh jadid: 1381/2/21
mybirthday.reduce(days=5) # tarikh jadid: 1381/2/16
mybirthday.print() # khorooji: 1381/2/16