Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2119431

Browse files
author
Saeid Darvish
committed
l25: datetime.datetime, continuing
1 parent 55589eb commit 2119431

File tree

1 file changed

+96
-2
lines changed

1 file changed

+96
-2
lines changed

‎lessons/l25.rst

Lines changed: 96 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ naive / aware
798798
ایجاد شی ``datetime``
799799
---------------------------
800800

801-
به شیوه‌ها زیر می‌توان یک شی تاریخ از نوع ``datetime.datetime`` ایجاد کرد:
801+
به ده شیوه زیر می‌توان یک شی از نوع ``datetime.datetime`` ایجاد کرد:
802802

803803

804804

@@ -826,7 +826,7 @@ naive / aware
826826

827827
|
828828
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``)::
830830

831831

832832
>>> import datetime
@@ -876,6 +876,100 @@ naive / aware
876876

877877

878878

879+
|
880+
881+
**۵- با استفاده از کلاس متد** ``(timestamp, tz=None)fromtimestamp`` [`اسناد پایتون <hhttps://docs.python.org/3/library/datetime.html#datetime.datetime.fromtimestamp>`__]، در تعریف این متد یک پارامتر اختیاری (tz) از نوع ``tzinfo`` و یک پارامتر اجباری (timestamp) از نوع ``int`` قرار داده شده است. این متد معادل POSIX timestamp [`ویکی‌پدیا <https://en.wikipedia.org/wiki/Unix_time>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.datetime`` را برمی‌گرداند. این مقدار برابر شمارش تعداد ثانیه‌ها به منطقه زمانی UTC از ساعت ۰۰:۰۰:۰۰ یکم ژانویه سال ۱۹۷۰ میلادی تا تاریخ مورد نظر می‌باشد. ::
882+
883+
884+
>>> import datetime
885+
>>> datetime.datetime.fromtimestamp(1617737400)
886+
datetime.datetime(2021, 4, 7, 0, 0)
887+
888+
::
889+
890+
>>> import datetime
891+
>>> datetime.datetime.fromtimestamp(1617737400, datetime.timezone.utc)
892+
datetime.datetime(2021, 4, 6, 19, 30, tzinfo=datetime.timezone.utc)
893+
894+
توجه داشته باشید استفاده از این متد تنها محدود به سال‌های مابین ۱۹۷۰ تا ۲۰۳۸ می‌باشد. چرا که این متد از تابع localtime یا gmtime در زبان برنامه‌نویسی C استفاده می‌کند که از سال ۲۰۳۸ به بعد مقدار timestamp از نوع signed 32-bit integer در این زبان، Overflow خواهد داشت! [`ویکی‌پدیا: Year 2038 problem <https://en.wikipedia.org/wiki/Year_2038_problem>`__]
895+
896+
897+
898+
899+
|
900+
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`` خواهد بود::
902+
903+
904+
>>> import datetime
905+
>>> datetime.datetime.utcfromtimestamp(1617737400)
906+
datetime.datetime(2021, 4, 6, 19, 30)
907+
908+
توجه داشته باشید استفاده از این متد تنها محدود به سال‌های مابین ۱۹۷۰ تا ۲۰۳۸ می‌باشد. چرا که این متد از تابع localtime یا gmtime در زبان برنامه‌نویسی C استفاده می‌کند که از سال ۲۰۳۸ به بعد مقدار timestamp از نوع signed 32-bit integer در این زبان، Overflow خواهد داشت! [`ویکی‌پدیا: Year 2038 problem <https://en.wikipedia.org/wiki/Year_2038_problem>`__]
909+
910+
911+
|
912+
913+
**۷- با استفاده از کلاس متد** ``fromordinal`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.fromordinal>`__]، در تعریف این متد یک پارامتر از نوع ``int`` قرار داده شده است که در واقع این متد معادل یک proleptic Gregorian ordinal [`ویکی‌پدیا <https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.datetime`` را برمی‌گرداند. این مقدار برابر شمارش تعداد روزها از تاریخ یکم ژانویه سال یک میلادی تا تاریخ مورد نظر می‌باشد. باید توجه داشت مقادیر مربوط به ساعت همانند minute ،hour یا ``tzinfo`` شی ایجاد شده برابر ``None`` خواهد بود::
914+
915+
916+
>>> import datetime
917+
>>> datetime.datetime.fromordinal(737887)
918+
datetime.datetime(2021, 4, 7, 0, 0)
919+
920+
921+
|
922+
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`` خواهد بود::
924+
925+
datetime.fromisocalendar(year, week, day)
926+
927+
::
928+
929+
>>> import datetime
930+
>>> datetime.datetime.fromisocalendar(2021, 14, 3) # Wednesday, April 7, 2021
931+
datetime.datetime(2021, 4, 7, 0, 0)
932+
933+
934+
|
935+
936+
**۹- با استفاده از کلاس متد** ``combine`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.combine>`__]، در تعریف این متد سه پارامتر قرار داده شده است که از سمت چپ به ترتیب از نوع ``datetime.time`` ،``datetime.date`` و ``datetime.tzinfo`` می‌باشند. در واقع این متد یک شی ``datetime.date`` و ``datetime.time`` جداگانه را دریافت و با یکدیگر ترکیب و یک شی ``datetime.datetime`` تولید می‌کند. پارامتر ``tzinfo`` اختیاری بوده و از نسخه 3.6 پایتون به این متد اضافه گردیده است که در صورت ارسال آرگومان متناظر به آن، این مقدار به عنوان منطقه زمانی شی خروجی در نظر گرفته خواهد شد؛ در غیر این صورت از منطقه زمانی شی ``datetime.time`` استفاده خواهد شد::
937+
938+
datetime.combine(date, time, tzinfo)
939+
940+
::
941+
942+
>>> import datetime
943+
944+
>>> d = datetime.date(2021, 4, 7)
945+
>>> t = datetime.time(hour=22, minute=4, second=30, tzinfo=datetime.timezone.utc)
946+
947+
>>> datetime.datetime.combine(d, t)
948+
datetime.datetime(2021, 4, 7, 22, 4, 30, tzinfo=datetime.timezone.utc)
949+
950+
|
951+
952+
**۱۰- با استفاده از کلاس متد** ``fromisoformat`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat>`__] (البته از نسخه 3.7 پایتون به بعد)، در تعریف این متد یک پارامتر از نوع ``str`` قرار داده شده است که در واقع این متد یک زمان مشخص را بر اساس قالب استاندارد ISO 8601 [`ویکی‌پدیا <https://en.wikipedia.org/wiki/ISO_8601>`__] دریافت و یک شی معادل از کلاس ``datetime.datetime`` را برمی‌گرداند::
953+
954+
YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]
955+
956+
الگوی بالا حالت‌های قابل پذیرش از قالب استاندارد ISO 8601 را برای این متد نمایش می‌دهد. به چند نمونه کد زیر توجه نمایید:
957+
958+
::
959+
960+
>>> import datetime
961+
>>> d = datetime.datetime.fromisoformat('2021年04月07日')
962+
963+
964+
965+
966+
967+
968+
969+
970+
971+
972+
879973

880974
|
881975

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /