You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lessons/l25.rst
+32-10Lines changed: 32 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -798,7 +798,7 @@ naive / aware
798
798
ایجاد شی ``datetime``
799
799
---------------------------
800
800
801
-
به ده شیوه زیر میتوان یک شی از نوع ``datetime.datetime`` ایجاد کرد:
801
+
به یازده شیوه زیر میتوان یک شی از نوع ``datetime.datetime`` ایجاد کرد که بنابر شرایط میتوانید از آنها بهره بگیرید:
802
802
803
803
804
804
@@ -816,7 +816,7 @@ naive / aware
816
816
tzinfo=None, *, fold=0)
817
817
818
818
819
-
::
819
+
یک نمونه استفاده::
820
820
821
821
822
822
>>> import datetime
@@ -826,7 +826,7 @@ naive / aware
826
826
827
827
|
828
828
829
-
**۲- با استفاده از کلاس متد** ``today`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.today>`__]، این متد زمان لحظه جاری را بدون در نظر گرفتن منطقه زمانی برمیگرداند (``tzinfo=None``)::
829
+
**۲- با استفاده از کلاس متد** ``today`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.today>`__]، این متد زمان لحظه جاری سیستم را بدون امکان ثبت منطقه زمانی (``tzinfo=None``) در قالب یک شی از کلاس ``datetime.datetime`` برمیگرداند::
830
830
831
831
832
832
>>> import datetime
@@ -836,7 +836,7 @@ naive / aware
836
836
837
837
|
838
838
839
-
**۳- با استفاده از کلاس متد** ``(tz=None)now`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.now>`__]، عملکرد این متد نیز همانند ``today`` میباشد با این تفاوت که میتوان یک شی منطقه زمانی نیز به صورت آرگومان به آن ارسال نمود::
839
+
**۳- با استفاده از کلاس متد** ``(tz=None)now`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.now>`__]، عملکرد این متد نیز همانند ``today`` میباشد با این تفاوت که میتوان یک شی منطقه زمانی نیز به صورت آرگومان به آن ارسال و ثبت نمود::
توجه داشته باشید ارسال شی منطقه زمانی (``tz``) در نمونه کد بالا باعث تغییر در زمان نشد. علت این امر نیز مربوط به منطقه زمانی سیستمی است که برنامه بر روی آن اجرا میشود، در این سیستم منطقه زمانی بر روی ``04:30+UTC`` (وقت ساعت تابستانی، تهران) تنظیم بوده که کاملا برابر با مقدار ``tz`` ارسال شده میباشد.
857
+
856
858
857
859
|
858
860
859
-
**۴- با استفاده از کلاس متد** ``utcnow`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow>`__]، خروجی این متد همانند خروجی ``datetime.now(timezone.utc)`` میباشد. یعنی زمان لحظه جاری را بر اساس منطقه زمانی UTC برمیگرداند ولی با این تفاوت که مقدار پارامتر ``tzinfo`` آن برابر ``None`` خواهد بود::
861
+
**۴- با استفاده از کلاس متد** ``utcnow`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow>`__]، خروجی این متد همانند خروجی ``datetime.now(timezone.utc)`` میباشد. یعنی زمان لحظه جاری سیستم را بر اساس منطقه زمانی UTC برمیگرداند ولی با این تفاوت که مقدار پارامتر ``tzinfo`` آن برابر ``None`` خواهد بود::
860
862
861
863
862
864
>>> import datetime
@@ -898,7 +900,7 @@ naive / aware
898
900
899
901
|
900
902
901
-
**۶- با استفاده از کلاس متد** ``(timestamp)utcfromtimestamp`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.utcfromtimestamp>`__]، خروجی این متد همانند ``fromtimestamp(timestamp, datetime.timezone.utc)`` بوده و معادل POSIX timestamp یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.datetime`` را بر مبنای منطقه زمانی UTC برمیگرداند. ولی با این تفاوت که مقدار پارامتر ``tzinfo`` آن برابر ``None`` خواهد بود::
903
+
**۶- با استفاده از کلاس متد** ``(timestamp)utcfromtimestamp`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.utcfromtimestamp>`__]، خروجی این متد نیز همانند خروجی کلاس متد ``fromtimestamp(timestamp, datetime.timezone.utc)`` بوده و معادل POSIX timestamp یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.datetime`` را بر مبنای منطقه زمانی UTC برمیگرداند. ولی با این تفاوت که مقدار پارامتر ``tzinfo`` آن برابر ``None`` خواهد بود::
902
904
903
905
904
906
>>> import datetime
@@ -920,7 +922,7 @@ naive / aware
920
922
921
923
|
922
924
923
-
**۸- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisocalendar>`__] (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر میباشند. در واقع این متد معادل ISO calendar [`ویکیپدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.date`` را برمیگرداند. در این استاندارد، یک سال شامل ۵۲ هفته میباشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه میگردد (دوشنبه:۱، سهشنبه:۲، ... یکشنبه:۷). باید توجه داشت مقادیر مربوط به ساعت همانند minute ،hour یا ``tzinfo`` شی ایجاد شده برابر ``None`` خواهد بود::
925
+
**۸- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisocalendar>`__] (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر میباشند. در واقع این متد معادل ISO calendar [`ویکیپدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.datetime`` را برمیگرداند. در این استاندارد، یک سال تقریبا شامل ۵۲ هفته میباشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه میگردد (دوشنبه:۱، سهشنبه:۲، ... یکشنبه:۷). باید توجه داشت مقادیر مربوط به ساعت همانند minute ،hour یا ``tzinfo`` شی ایجاد شده برابر ``None`` خواهد بود::
الگوی بالا حالتهای قابل پذیرش از قالب استاندارد ISO 8601 را برای این متد نمایش میدهد. به چند نمونه کد زیر توجه نمایید:
958
+
الگوی بالا حالتهای قابل پذیرش از قالب استاندارد ISO 8601 را برای این متد نمایش میدهد که در این الگو به جای ``*`` هر کاراکتری میتواند قرار بگیرد و بخشهای داخل براکت (``[]``) اختیاری هستند. به چند نمونه کد زیر نیز توجه نمایید:
957
959
958
960
::
959
961
960
-
>>> import datetime
961
-
>>> d = datetime.datetime.fromisoformat('2021-04-07')
**۱۱- با استفاده از کلاس متد** ``strptime`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime>`__]، تعریف این متد به صورت زیر میباشد::
981
+
982
+
datetime.strptime(date_string, format)
966
983
984
+
این متد بسیار پرکاربرد بوده و عملکرد آن به این صورت میباشد که یک زمان مشخص را از نوع ``str`` به همراه قالب آن زمان دریافت و یک شی از کلاس ``datetime.datetime`` برمیگرداند. ساختار قالب در اینجا با آنچه توسط استاندارد ISO 8601 مطرح شده است کمی متفاوت میباشد که در انتهای این درس مورد بررسی قرار خواهد گرفت.
0 commit comments