Skip to content

Commit 2f3c961

Browse files
author
Saeid Darvish
committed
l25: datetime.timedelta, completed
1 parent 91e9ce7 commit 2f3c961

1 file changed

Lines changed: 116 additions & 0 deletions

File tree

lessons/l25.rst

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,122 @@
5555
کلاس ``datetime.timedelta``
5656
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5757

58+
پیش از بررسی کلاس‌های یاد شده لازم است با کلاسی دیگر از ماژول datetime آشنا شویم. در زبان برنامه‌نویسی پایتون از اشیای کلاس ``timedelta`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#timedelta-objects>`__] برای بیان «مدت زمان» (duration) مشخص یا اختلاف بین دو تاریخ یا ساعت استفاده می‌شود. الگوی نمونه‌سازی از این کلاس به شکل زیر است::
59+
60+
td = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
61+
62+
با نمونه‌سازی از این کلاس و ارسال آرگومان‌های دلخواه، براساس تمام واحدهای پرتکرار از زمان یا حتی ترکیبی از آن‌ها می‌توانیم یک مدت‌زمان در سیستم زمانی پایتون ایجاد کنیم؛ هفته (weeks)، روز (days)، ساعت (hours)، دقیقه (minutes)، ثانیه (seconds)، میلی‌ثانیه (milliseconds یا همان 0.001 ثانیه) و میکروثانیه (microseconds یا همان 0.000001 ثانیه). تمامی این مقادیر اختیاری و با مقدار پیش‌فرض ``0`` هستند که می‌توانند از نوع ``int`` یا ``float``، مثبت یا منفی باشند
63+
64+
::
65+
66+
>>> from datetime import timedelta
67+
68+
69+
::
70+
71+
>>> no_duration = timedelta()
72+
>>> no_duration
73+
datetime.timedelta(0)
74+
75+
>>> no_duration.total_seconds()
76+
0.0
77+
78+
::
79+
80+
>>> delta = timedelta(
81+
... days=50,
82+
... seconds=27,
83+
... microseconds=10,
84+
... milliseconds=29000,
85+
... minutes=5,
86+
... hours=8,
87+
... weeks=2
88+
... )
89+
>>> # Only days, seconds, and microseconds remain
90+
>>> delta
91+
datetime.timedelta(days=64, seconds=29156, microseconds=10)
92+
93+
>>> delta.total_seconds()
94+
5558756.00001
95+
96+
::
97+
98+
>>> one_half_days = timedelta(days=1.5)
99+
>>> one_half_days
100+
datetime.timedelta(days=1, seconds=43200)
101+
102+
>>> one_half_days.total_seconds()
103+
129600.0
104+
105+
106+
107+
توجه داشته باشید که از تمام انواع آرگومانی که ارسال می‌کنید این تنها ``seconds`` ،``days`` و ``microseconds`` هستند که دارای attribute متناظر بوده و قابل دسترس می‌باشند. در واقع تمامی مقادیر ارسالی در زمان نمونه‌سازی با یکدیگر ترکیب شده و در نهایت به این سه attribute تبدیل می‌شوند. به مقداردهی در زمان نمونه‌سازی و نیز به خروجی سطر پایانی از نمونه کدهای بالا توجه نمایید.
108+
109+
همچنین از نسخه 3.2 پایتون می‌توانید با استفاده از متد ``total_seconds`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.timedelta.total_seconds>`__] کل مدت زمان ذخیره شده در شی timedelta را در واحد ثانیه دریافت نمایید::
110+
111+
>>> delta = timedelta(microseconds=1)
112+
>>> delta.total_seconds()
113+
1e-06
114+
115+
دو شی ``datetime.timedelta`` پایتون قابلیت شرکت در محاسبات ریاضی را دارند::
116+
117+
118+
>>> from datetime import timedelta
119+
120+
>>> year = timedelta(days=365)
121+
122+
>>> ten_years = 10 * year
123+
>>> ten_years
124+
datetime.timedelta(days=3650)
125+
126+
>>> ten_years.days // 365
127+
10
128+
129+
>>> nine_years = ten_years - year
130+
>>> nine_years
131+
datetime.timedelta(days=3285)
132+
133+
>>> three_years = nine_years // 3
134+
>>> three_years
135+
datetime.timedelta(days=1095)
136+
137+
>>> three_years.days // 365
138+
3
139+
140+
::
141+
142+
>>> day = timedelta(days=1)
143+
>>> negative_day = timedelta(days=-1)
144+
145+
>>> negative_day
146+
datetime.timedelta(days=-1)
147+
148+
>>> day + negative_day
149+
datetime.timedelta(0)
150+
151+
>>> day - negative_day
152+
datetime.timedelta(days=2)
153+
154+
155+
156+
همچنین دو شی ``datetime.timedelta`` پایتون قابلیت مقایسه با یکدیگر را دارند::
157+
158+
>>> from datetime import timedelta
159+
>>> year = timedelta(days=365)
160+
>>> three_years = timedelta(days=1095)
161+
162+
>>> year == year
163+
True
164+
>>> year == three_years
165+
False
166+
>>> year > three_years
167+
False
168+
>>> year < three_years
169+
True
170+
>>> year * 3 == three_years
171+
True
172+
173+
در ادامه به همراه بخش‌های بعدی این درس با کاربرد اصلی اشیای ``datetime.timedelta`` آشنا خواهیم شد.
58174

59175

60176
کلاس ``datetime.date``

0 commit comments

Comments
 (0)