Skip to content

Commit 212b1d8

Browse files
author
Saeid Darvish
committed
l25: datetime.time. completed
1 parent 71fa52c commit 212b1d8

1 file changed

Lines changed: 48 additions & 1 deletion

File tree

lessons/l25.rst

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,12 @@
253253
<class 'datetime.timezone'>
254254

255255

256+
.. note::
257+
258+
به منظور شفاف‌سازی بیشتر و درک اهمیت منطقه زمانی، اگر فرض کنیم ساعت در یک لحظه به وقت ``UTC`` برابر ``12:00`` است آنگاه همان لحظه ساعت به وقت ``UTC-05:00`` برابر ``07:00`` و به وقت ``UTC+04:30`` برابر ``16:30`` خواهد بود.
259+
260+
261+
256262
کلاس ``datetime.date``
257263
~~~~~~~~~~~~~~~~~~~~~~~~~~~
258264

@@ -653,7 +659,32 @@
653659
>>> t_22 < t_20
654660
False
655661

656-
توجه داشته باشید که نمی‌توان از عملگرهایی همچون ``-`` یا ``+`` برای یک شی از نوع ``datetime.time`` استفاده کرد.
662+
به مثالی دیگر توجه نمایید::
663+
664+
>>> from datetime import timedelta, timezone, time
665+
666+
>>> tz_et = timezone(timedelta(hours=-5), 'Eastern Time Zone')
667+
>>> tz_ir = timezone(timedelta(hours=4, minutes=30), 'Asia/Tehran')
668+
669+
>>> t_et = time(12, 0, 0, tzinfo=tz_et)
670+
>>> t_ir = time(12, 0, 0, tzinfo=tz_ir)
671+
672+
>>> t_et == t_ir
673+
False
674+
>>> t_et > t_ir
675+
True
676+
>>> t_et < t_ir
677+
False
678+
679+
>>> t_ir_new = time(21, 30, 0, tzinfo=tz_ir)
680+
681+
>>> t_et == t_ir_new
682+
True
683+
684+
685+
در کد بالا درست است که هر دو شی ``t_et`` و ``t_ir`` حاوی ساعت دوازده می‌باشند ولی باید به این نکته توجه داشت، در حالی ``t_et`` ساعت دوازده را نمایش می‌دهد که نسبت به منطقه زمانی مبنا (UTC) پنج ساعت عقب‌تر است؛ در واقع نه ساعت و سی دقیقه بعد، ``t_ir`` به زمانی خواهد رسید که ``t_et`` اکنون آن را نمایش می‌دهد!
686+
687+
همچنین توجه داشته باشید که نمی‌توان از عملگرهایی همچون ``-`` یا ``+`` برای اشیای ``datetime.time`` استفاده کرد.
657688

658689

659690
متدهای شی ساعت
@@ -677,6 +708,22 @@
677708
>>> t_20
678709
datetime.time(20, 20, 22)
679710

711+
به مثالی دیگر توجه نمایید::
712+
713+
>>> from datetime import timedelta, timezone, time
714+
715+
>>> tz = timezone(timedelta(hours=-5), 'Eastern Time Zone')
716+
>>> t = time(hour=22, minute=22, second=22, tzinfo=tz)
717+
>>> t
718+
datetime.time(22, 22, 22, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400), 'Eastern Time Zone'))
719+
720+
721+
>>> tz_teh = timezone(timedelta(hours=4, minutes=30), 'Asia/Tehran')
722+
>>> t.replace(tzinfo=tz_teh)
723+
datetime.time(22, 22, 22, tzinfo=datetime.timezone(datetime.timedelta(seconds=16200), 'Asia/Tehran'))
724+
725+
باید توجه داشت که با تغییر منطقه زمانی یک شی ``datetime.time``، اطلاعات مربوط به ساعت، در آن تغییری نخواهند داشت. چرا که تغییر ساعت بر اساس منطقه زمانی می‌تواند منجر به تغییر تاریخ گردد و این شی هیچ اطلاعاتی از تاریخ ندارد.
726+
680727

681728

682729
* **متد** ``isoformat`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.time.isoformat>`__]: معادل مقدار ساعت شی را در قالب استاندارد ISO 8601 برمی‌گرداند::

0 commit comments

Comments
 (0)