Skip to content

Commit eb2be33

Browse files
author
Saeid
committed
l25: datetime.time start
1 parent 2a0474d commit eb2be33

1 file changed

Lines changed: 122 additions & 5 deletions

File tree

lessons/l25.rst

Lines changed: 122 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@
176176
کلاس ``datetime.date``
177177
~~~~~~~~~~~~~~~~~~~~~~~~~~~
178178

179-
این کلاس نمایش ایجاد یک شی تاریخ بر اساس گاه‌شماری میلادی (Gregorian calendar) در زبان برنامه‌نویسی پایتون می‌باشد. در ادامه این بخش به بررسی چگونگی ایجاد شی و اجزای آن خواهیم پرداخت.
179+
این کلاس [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#date-objects>`__] نمایش ایجاد یک شی تاریخ بر اساس گاه‌شماری میلادی (Gregorian calendar) در زبان برنامه‌نویسی پایتون می‌باشد. در ادامه این بخش به بررسی چگونگی ایجاد شی و اجزای آن خواهیم پرداخت.
180180

181181
ایجاد شی تاریخ
182182
------------------
@@ -239,16 +239,16 @@
239239
>>> datetime.MAXYEAR
240240
9999
241241

242-
>>> datetime.MINYEAR <= date.year <= datetime.MAXYEAR
242+
>>> datetime.MINYEAR <= d.year <= datetime.MAXYEAR
243243
True
244-
>>> 1 <= date.month <= 12
244+
>>> 1 <= d.month <= 12
245245
True
246-
>>> 1 <= date.day <= 31
246+
>>> 1 <= d.day <= 31
247247
True
248248

249249
باید توجه داشت که مقدار این سه attribute پس از نمونه‌سازی قابل تغییر نخواهد بود و به اصطلاح read-only هستند::
250250

251-
>>> date.year = 2022
251+
>>> d.year = 2022
252252
Traceback (most recent call last):
253253
File "<stdin>", line 1, in <module>
254254
AttributeError: attribute 'year' of 'datetime.date' objects is not writable
@@ -424,6 +424,123 @@
424424
کلاس ``datetime.time``
425425
~~~~~~~~~~~~~~~~~~~~~~~~~~~
426426

427+
این کلاس [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#time-objects>`__] نمایش ایجاد یک شی ساعت مشخص از روز در زبان برنامه‌نویسی پایتون می‌باشد. در ادامه این بخش به بررسی چگونگی ایجاد شی و اجزای آن خواهیم پرداخت.
428+
429+
ایجاد شی ساعت
430+
------------------
431+
432+
به دو شیوه زیر می‌توان یک شی ساعت از نوع ``datetime.time`` ایجاد کرد:
433+
434+
::
435+
436+
>>> import datetime
437+
438+
>>> t = datetime.time(hour=10, minute=4, second=30)
439+
>>> t = datetime.time.fromisoformat('10:04:30') # Python 3.7
440+
441+
>>> t
442+
datetime.time(10, 4, 30)
443+
>>> type(t)
444+
<class 'datetime.time'>
445+
446+
>>> t.hour
447+
10
448+
>>> t.minute
449+
4
450+
>>> t.second
451+
30
452+
>>> t.microsecond
453+
0
454+
>>> print(t.tzinfo)
455+
None
456+
>>> t.fold
457+
0
458+
459+
460+
461+
**۱- با استفاده از نمونه‌سازی**::
462+
463+
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
464+
465+
::
466+
467+
468+
>>> import datetime
469+
>>> t = datetime.time(22, 4, 30)
470+
471+
472+
473+
همانطور که از تعریف این کلاس مشخص است، برای نمونه‌سازی از کلاس ``datetime.time`` می‌توان شش Instance attribute آن را مقداردهی نماییم. این شش attribute که همگی اختیاری و دارای مقدار پیش‌فرض هستند عبارتند از:
474+
475+
* ``hour``: از نوع ``int`` می‌باشد و مقداری برابر با ساعت مورد نظر خواهد داشت. این مقدار می‌بایست عددی از بین اعداد ``0`` تا ``24`` باشد (``range(24)``).
476+
477+
* ``minute``: از نوع ``int`` می‌باشد و مقداری برابر با دقیقه مورد نظر خواهد داشت که می‌بایست عددی از بین اعداد ``0`` تا ``60`` باشد (``range(60)``).
478+
479+
* ``second``: از نوع ``int`` می‌باشد و مقداری برابر با ثانیه مورد نظر خواهد داشت که می‌بایست عددی از بین اعداد ``0`` تا ``60`` باشد (``range(60)``).
480+
481+
* ``microsecond``: از نوع ``int`` می‌باشد و مقداری برابر با میکروثانیه مورد نظر خواهد داشت که می‌بایست عددی از بین اعداد ``0`` تا ``1000000`` باشد (``range(1000000)``). هر میکروثانیه برابر با 0.000001 ثانیه می‌باشد.
482+
483+
* ``tzinfo``: معرف منطقه زمانی (Time zone) است که مقدار پیش‌فرض آن ``None`` می‌باشد و می‌تواند یک شی از زیرکلاس‌های (subclass) کلاس ``tzinfo`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.tzinfo>`__] را بپذیرد.
484+
485+
* ``fold``: از نسخه 3.6 پایتون به بعد اضافه شده است و تنها با استفاده از شیوه نام=مقدار قابل مقداردهی می‌باشد.
486+
487+
باید توجه داشت که مقدار این شش attribute پس از نمونه‌سازی قابل تغییر نخواهد بود و به اصطلاح read-only هستند::
488+
489+
>>> t.hour = 14
490+
Traceback (most recent call last):
491+
File "<stdin>", line 1, in <module>
492+
AttributeError: attribute 'hour' of 'datetime.time' objects is not writable
493+
494+
|
495+
496+
**۲- با استفاده از کلاس متد** ``fromisoformat`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.time.fromisoformat>`__] از کلاس ``datetime.time`` (البته از نسخه 3.7 پایتون به بعد)، در تعریف این متد یک پارامتر از نوع ``str`` قرار داده شده است که در واقع این متد یک ساعت را براساس قالب کلی استاندارد ISO 8601 [`ویکی‌پدیا <https://en.wikipedia.org/wiki/ISO_8601>`__] دریافت و یک شی معادل از کلاس ``datetime.time`` را برمی‌گرداند. این قالب معمولا برابر ``hh:mm:ss`` می‌باشد که از سمت چپ معرف دو رقم ساعت، دونقطه (colon)، دو رقم دقیقه، دونقطه (colon) و دو رقم ثانیه می‌باشد؛ همانند: ``04:23:01``::
497+
498+
>>> import datetime
499+
500+
::
501+
502+
>>> t = datetime.time.fromisoformat('04')
503+
>>> t
504+
datetime.time(4, 0)
505+
506+
::
507+
508+
>>> t = datetime.time.fromisoformat('04:23')
509+
>>> t
510+
datetime.time(4, 23)
511+
512+
::
513+
514+
515+
>>> t = datetime.time.fromisoformat('04:23:01')
516+
>>> t
517+
datetime.time(4, 23, 1)
518+
519+
::
520+
521+
>>> t = datetime.time.fromisoformat('04:23:01.000384')
522+
>>> t
523+
datetime.time(4, 23, 1, 384)
524+
525+
::
526+
527+
>>> t = datetime.time.fromisoformat('04:23:01+04:30')
528+
>>> t
529+
datetime.time(4, 23, 1, tzinfo=datetime.timezone(datetime.timedelta(seconds=16200)))
530+
531+
::
532+
533+
>>> t = datetime.time.fromisoformat('04:23:01.000384+04:30')
534+
>>> t
535+
datetime.time(4, 23, 1, 384, tzinfo=datetime.timezone(datetime.timedelta(seconds=16200)))
536+
537+
::
538+
539+
>>> t = datetime.time.fromisoformat('04+04:30')
540+
>>> t
541+
datetime.time(4, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=16200)))
542+
543+
427544

428545
کلاس ``datetime.datetime``
429546
~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)