CodeShot

قبل به اشتراک گذاری؛ کدت رو تبدیل به یک تصویر حرفه ای کن! توی باکس پایین بنویسش و روی دکمه «دانلودش کن!» کلیک کن

کار با تاریخ پیشرفته

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
دانلودش کن
ایجاد شده در کدبزن