|
18 | 18 |
|
19 | 19 |
|
20 | 20 |
|
| 21 | +برای کار با زمان سه ماژول در کتابخانه استاندارد زبان برنامهنویسی پایتون آماده شده است؛ time ،datetime و calendar. این درس به شرح کامل ماژول datetime پایتون اختصاص یافته است و دو ماژول دیگر توسط درس بعد بررسی خواهند شد. ماژول datetime پایتون انواع یا کلاسهای زیادی را برای ایجاد اشیا مرتبط با زمان و دستکاری (manipulating) آنها فراهم آورده است، همچون ``time`` ،``date`` ،``timezone`` ،``timedelta`` و ``datetime`` که همگی در این درس بررسی خواهند شد. |
21 | 22 |
|
22 | 23 | توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین به منظور جلوگیری از پیچیدگیهای غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارائه میشود.
|
23 | 24 |
|
|
42 | 43 |
|
43 | 44 | * **کلاس** ``date``: مناسب برای ایجاد شی تاریخ در پایتون میباشد که اشیا آن هیچ آگاهی نسبت به ساعت و منطقه زمانی (Time zone) [`ویکیپدیا <https://en.wikipedia.org/wiki/Time_zone>`__] نخواهند داشت و تنها مربوط به روزی خاص بر اساس گاهشماری میلادی (Gregorian calendar) [`ویکیپدیا <https://en.wikipedia.org/wiki/Gregorian_calendar>`__] میباشند.
|
44 | 45 |
|
45 | | -* **کلاس** ``time``: مناسب برای ایجاد شی ساعت در پایتون میباشد و اشیا این کلاس هیچ آگاهی نسبت به تاریخ یا روز خاصی ندارند و تنها حاوی یک زمان مشخص از شبانهروز خواهند بود. |
| 46 | +* **کلاس** ``time``: مناسب برای ایجاد شی ساعت در پایتون میباشد و اشیا این کلاس هیچ آگاهی نسبت به تاریخ یا روز خاصی ندارند و تنها حاوی یک ساعت مشخص از شبانهروز خواهند بود. |
46 | 47 |
|
47 | 48 | * **کلاس** ``datetime``: ترکیبی از دو کلاس ``date`` و ``time`` که اشیای آن میتوانند نسبت به یک زمان (تاریخ و ساعت) مشخص آگاهی کامل داشته باشند.
|
48 | 49 |
|
|
182 | 183 |
|
183 | 184 | هر وقت که صحبت از ساعت و زمان باشد، «منطقه زمانی» (Time zone) نیز جزئی از گفتگو خواهد بود. در زبان برنامهنویسی پایتون کلاس ``tzinfo`` از ماژول ``datetime`` امکان ایجاد منطقه زمانی را فراهم آورده است [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.tzinfo>`__]. ``tzinfo`` در واقع یک کلاس Abstract (درس نوزدهم) میباشد که نمیتوان از آن نمونهسازی و شی ایجاد کرد ولی میتوان به کمک آن، کلاس منطقه زمانی دلخواه خود را ایجاد نماییم. برای مشاهده اجزا و نکات مربوط به پیادهسازی منطقه زمانی دلخواه میتوانید به مستندات زبان برنامهنویسی پایتون مراجعه نمایید.
|
184 | 185 |
|
185 | | -اشتباه نکنید، در اکثر مواقع نیازی به پیادهسازی یک کلاس منطقه زمانی در پایتون نمیباشد. چرا که از قبل کلاس ``timezone`` از ماژول ``datetime`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#timezone-objects>`__] توسط این زبان فراهم آورده شده است. این کلاس یک subclass از ``datetime.tzinfo`` بوده و مبنای محاسبه منطقه زمانی در آن UTC [`ویکیپدیا <https://en.wikipedia.org/wiki/Coordinated_Universal_Time>`__] میباشد. این کلاس به تنهایی تمامی نیازهای معمول ما نسبت به ثبت منطقه زمانی در پایتون را برطرف میسازد. در سراسر ایران منطقه زمانی یکسان میباشد و به صورت استاندارد از مبنای UTC محاسبه میگردد؛ به این صورت که در شش ماه نخست سال برابر ``UTC+4:30`` و در شش ماه دوم از سال این مقدار برابر ``UTC+3:30`` خواهد بود [`ویکیپدیا Iran Standard Time (IRST) <https://en.wikipedia.org/wiki/Iran_Standard_Time>`__]. |
| 186 | +اشتباه نکنید، در اکثر مواقع نیازی به پیادهسازی یک کلاس منطقه زمانی در پایتون نمیباشد. چرا که از قبل کلاس ``timezone`` از ماژول ``datetime`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#timezone-objects>`__] توسط این زبان فراهم آورده شده است. این کلاس یک subclass از ``datetime.tzinfo`` بوده و مبنای محاسبه منطقه زمانی در آن UTC [`ویکیپدیا <https://en.wikipedia.org/wiki/Coordinated_Universal_Time>`__] میباشد. UTC یک قرارداد جهانی است و این کلاس به تنهایی تمامی نیازهای معمول ما نسبت به ثبت منطقه زمانی در پایتون را برطرف میسازد. برای مثال، در سراسر ایران منطقه زمانی یکسان میباشد و به صورت استاندارد از مبنای UTC محاسبه میگردد؛ به این صورت که در شش ماه نخست سال برابر ``UTC+4:30`` - با شمارش ساعت تابستانی [`ویکیپدیا <https://en.wikipedia.org/wiki/Daylight_saving_time>`__] - و در شش ماه دوم از سال این مقدار برابر ``UTC+3:30`` خواهد بود [`ویکیپدیا Iran Standard Time (IRST) <https://en.wikipedia.org/wiki/Iran_Standard_Time>`__]. |
| 187 | + |
186 | 188 |
|
187 | 189 | .. note::
|
188 | 190 |
|
|
210 | 212 | >>> type(tz)
|
211 | 213 | <class 'datetime.timezone'>
|
212 | 214 |
|
213 | | -شی ``tz`` ایجاد شده در نمونه کد بالا، بیانگر منطقه زمانی ``UTC+4:30`` میباشد. به عنوان مثالی دیگر، ایجاد شی برای منطقه زمانی ``UTC-05:00`` به صورت زیر میباشد:: |
| 215 | +شی ``tz`` ایجاد شده در نمونه کد بالا، بیانگر منطقه زمانی ``UTC+4:30`` (Asia/Tehran، با شمردن ساعت تابستانی) میباشد. به عنوان مثالی دیگر، ایجاد شی برای منطقه زمانی ``UTC-05:00`` (EST، بدون شمردن ساعت تابستانی) [`ویکیپدیا <https://en.wikipedia.org/wiki/Eastern_Time_Zone>`__] به صورت زیر میباشد:: |
214 | 216 |
|
215 | 217 |
|
216 | 218 | >>> tz = timezone(timedelta(hours=-5), 'Eastern Time Zone')
|
|
0 commit comments