Skip to content

Commit 2a0474d

Browse files
author
Saeid Darvish
committed
l25: datetime.date, completed
1 parent 2f3c961 commit 2a0474d

1 file changed

Lines changed: 109 additions & 1 deletion

File tree

lessons/l25.rst

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@
298298

299299
|
300300
301-
**۵- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.fromisocalendar>`__] از کلاس ``datetime.date`` (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر می‌باشند. در واقع این متد معادل ISO calendar [`ویکی‌پدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.date`` را برمی‌گرداند. در این استاندارد، یک سال شامل ۵۲ هفته می‌باشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه می‌گردد::
301+
**۵- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.fromisocalendar>`__] از کلاس ``datetime.date`` (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر می‌باشند. در واقع این متد معادل ISO calendar [`ویکی‌پدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.date`` را برمی‌گرداند. در این استاندارد، یک سال شامل ۵۲ هفته می‌باشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه می‌گردد (دوشنبه:۱، سه‌شنبه:۲، ... یکشنبه:۷)::
302302

303303
date.fromisocalendar(year, week, day)
304304

@@ -313,6 +313,114 @@
313313
>>> d = date.fromisocalendar(2021, 14, 3) # Wednesday, April 7, 2021
314314

315315

316+
مقایسه دو شی تاریخ
317+
----------------------------
318+
دو شی ``datetime.date`` پایتون قابلیت مقایسه با یکدیگر را دارند. همچنین می‌توان با استفاده از یک شی ``datetime.timedelta`` مقدار یک شی تاریخ را به جلو یا عقب هدایت کرد:
319+
320+
321+
::
322+
323+
>>> from datetime import date, timedelta
324+
325+
>>> today = date(2021, 4, 9)
326+
327+
>>> yesterday = today - timedelta(days=1)
328+
>>> yesterday
329+
datetime.date(2021, 4, 8)
330+
331+
>>> today > yesterday
332+
True
333+
>>> today == today
334+
True
335+
>>> today < yesterday
336+
False
337+
>>> today == yesterday + timedelta(days=1)
338+
True
339+
340+
>>> today - yesterday
341+
datetime.timedelta(days=1)
342+
343+
توجه داشته باشید حاصل تفاضل دو شی تاریخ پایتون یک شی از نوع ``datetime.timedelta`` خواهد بود!
344+
345+
346+
متدهای شی تاریخ
347+
----------------------------
348+
349+
برخی از Instance methodهای یک شی تاریخ پایتون به شرح زیر هستند:
350+
351+
352+
* **متد** ``toordinal`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.toordinal>`__]: معادل proleptic Gregorian ordinal از مقدار تاریخ شی را برمی‌گرداند::
353+
354+
>>> from datetime import date
355+
356+
>>> today = date(2021, 4, 9)
357+
>>> today.toordinal()
358+
737889
359+
360+
361+
362+
* **متد** ``isoformat`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isoformat>`__]: معادل مقدار تاریخ شی را در قالب استاندارد ISO 8601 برمی‌گرداند::
363+
364+
>>> from datetime import date
365+
366+
>>> today = date(2021, 4, 9)
367+
>>> today.isoformat()
368+
'2021-04-09'
369+
370+
371+
* **متد** ``isocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isocalendar>`__]: معادل ISO calendar از مقدار تاریخ شی را برمی‌گرداند::
372+
373+
>>> from datetime import date
374+
375+
>>> today = date(2021, 4, 9) # Friday, April 9, 2021
376+
>>> today.isocalendar()
377+
(2021, 14, 5)
378+
379+
از پایتون نسخه 3.9 نوع خروجی این متد به صورت زیر تغییر کرده است::
380+
381+
382+
>>> today.isocalendar()
383+
datetime.IsoCalendarDate(year=2021, week=14, weekday=5)
384+
385+
386+
387+
* **متد** ``weekday`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isocalendar>`__]: شماره روز از هفته جاری را برمی‌گرداند. دوشنبه:صفر، سه‌شنبه:۱ ... یک‌شنبه:۶::
388+
389+
>>> from datetime import date
390+
391+
>>> today = date(2021, 4, 9) # Friday, April 9, 2021
392+
>>> today.weekday()
393+
4
394+
395+
396+
397+
* **متد** ``isoweekday`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isoweekday>`__]: شماره روز از هفته جاری را بر اساس استاندارد ISO calendar برمی‌گرداند. دوشنبه:۱، سه‌شنبه:۲ ... یک‌شنبه:۷::
398+
399+
>>> from datetime import date
400+
401+
>>> today = date(2021, 4, 9) # Friday, April 9, 2021
402+
>>> today.isoweekday()
403+
5
404+
405+
406+
407+
408+
* **متد** ``replace`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.replace>`__]: با استفاده از این متد می‌توان یک شی تاریخ جدید همانند شی جاری ایجاد کرد ولی با کمی تغییرات::
409+
410+
replace(year, month, day)
411+
412+
::
413+
414+
>>> from datetime import date
415+
416+
>>> today = date(2021, 4, 9)
417+
418+
>>> another_day = today.replace(day=22)
419+
>>> another_day
420+
datetime.date(2021, 4, 22)
421+
422+
423+
316424
کلاس ``datetime.time``
317425
~~~~~~~~~~~~~~~~~~~~~~~~~~~
318426

0 commit comments

Comments
 (0)