|
421 | 421 |
|
422 | 422 |
|
423 | 423 |
|
| 424 | +* **متد** ``today`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.today>`__]: جدا از اینکه شی موجود حاوی چه تاریخی است، یک شی تاریخ جدید بر اساس تاریخ روز جاری - با توجه به تنظیمات سیستم - برمیگرداند:: |
| 425 | + |
| 426 | + >>> from datetime import date |
| 427 | + |
| 428 | + >>> d = date(2021, 4, 9) |
| 429 | + >>> d.today() |
| 430 | + datetime.date(2021, 4, 10) |
| 431 | + |
| 432 | + |
| 433 | + |
| 434 | + |
| 435 | + |
424 | 436 | کلاس ``datetime.time`` |
425 | 437 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
426 | 438 |
|
|
472 | 484 |
|
473 | 485 | همانطور که از تعریف این کلاس مشخص است، برای نمونهسازی از کلاس ``datetime.time`` میتوان شش Instance attribute آن را مقداردهی نماییم. این شش attribute که همگی اختیاری و دارای مقدار پیشفرض هستند عبارتند از: |
474 | 486 |
|
475 | | -* ``hour``: از نوع ``int`` میباشد و مقداری برابر با ساعت مورد نظر خواهد داشت. این مقدار میبایست عددی از بین اعداد ``0`` تا ``24`` باشد (``range(24)``). |
| 487 | +* ``hour``: از نوع ``int`` میباشد و مقداری برابر با ساعت مورد نظر خواهد داشت. این مقدار میبایست عددی از بین اعداد ``0`` تا ``24`` باشد : range(24) |
476 | 488 |
|
477 | | -* ``minute``: از نوع ``int`` میباشد و مقداری برابر با دقیقه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``60`` باشد (``range(60)``). |
| 489 | +* ``minute``: از نوع ``int`` میباشد و مقداری برابر با دقیقه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``60`` باشد : range(60) |
478 | 490 |
|
479 | | -* ``second``: از نوع ``int`` میباشد و مقداری برابر با ثانیه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``60`` باشد (``range(60)``). |
| 491 | +* ``second``: از نوع ``int`` میباشد و مقداری برابر با ثانیه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``60`` باشد : range(60) |
480 | 492 |
|
481 | | -* ``microsecond``: از نوع ``int`` میباشد و مقداری برابر با میکروثانیه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``1000000`` باشد (``range(1000000)``). هر میکروثانیه برابر با 0.000001 ثانیه میباشد. |
| 493 | +* ``microsecond``: از نوع ``int`` میباشد و مقداری برابر با میکروثانیه مورد نظر خواهد داشت که میبایست عددی از بین اعداد ``0`` تا ``1000000`` باشد : range(1000000) - هر میکروثانیه برابر با 0.000001 ثانیه میباشد. |
482 | 494 |
|
483 | | -* ``tzinfo``: معرف منطقه زمانی (Time zone) است که مقدار پیشفرض آن ``None`` میباشد و میتواند یک شی از زیرکلاسهای (subclass) کلاس ``tzinfo`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.tzinfo>`__] را بپذیرد. |
| 495 | +* ``tzinfo``: معرف منطقه زمانی (Time zone) است که مقدار پیشفرض آن ``None`` میباشد و میتواند یک شی از زیرکلاسهای (subclass) کلاس ``tzinfo`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.tzinfo>`__] را بپذیرد. در ادامه بیشتر در مورد این نوع اشیا صحبت خواهیم کرد. |
484 | 496 |
|
485 | | -* ``fold``: از نسخه 3.6 پایتون به بعد اضافه شده است و تنها با استفاده از شیوه نام=مقدار قابل مقداردهی میباشد. |
| 497 | +* ``fold``: از نسخه 3.6 پایتون به بعد اضافه شده است و تنها با استفاده از شیوه **نام=مقدار** قابل مقداردهی میباشد. این پارامتر در واقع یک نشانگر برای ابهامزدایی در بیان ساعت میباشد. برای مثال از کاربرد این پارامتر وضعیت «ساعت تابستانی» [`ویکیپدیا <https://en.wikipedia.org/wiki/Daylight_saving_time>`__] را تصور کنید. ساعت رسمی ایران هر سال در ساعت ۲۴ روز اول فروردین ماه یک ساعت به جلو کشیده میشود و در ساعت ۲۴ روز سیام شهریور ماه به حالت قبلی برگردانده میشود، اکنون در روز سیام شهریور ماه ساعت ۲۳ تا ۲۴ دوبار تکرار میشود، در این مواقع میتوان از این پارامتر برای مشخص کردن وضعیت ساعت استفاده کرد. به این صورت که مقدار ``0`` بیانگر وضعیت قبل از تغییر و ``1`` بیانگر وضعیت پس از تغییر میتواند باشد. |
486 | 498 |
|
487 | 499 | باید توجه داشت که مقدار این شش attribute پس از نمونهسازی قابل تغییر نخواهد بود و به اصطلاح read-only هستند:: |
488 | 500 |
|
|
491 | 503 | File "<stdin>", line 1, in <module> |
492 | 504 | AttributeError: attribute 'hour' of 'datetime.time' objects is not writable |
493 | 505 |
|
| 506 | + |
494 | 507 | | |
495 | 508 |
|
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``:: |
| 509 | +**۲- با استفاده از کلاس متد** ``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 | 510 |
|
498 | 511 | >>> import datetime |
499 | 512 | |
|
540 | 553 | >>> t |
541 | 554 | datetime.time(4, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=16200))) |
542 | 555 |
|
| 556 | +مقایسه دو شی ساعت |
| 557 | +---------------------------- |
| 558 | + |
| 559 | +دو شی ``datetime.time`` پایتون قابلیت مقایسه با یکدیگر را دارند اگر هر دو naive یا هر دو aware باشند: |
| 560 | + |
| 561 | + |
| 562 | +:: |
| 563 | + |
| 564 | + >>> from datetime import time |
| 565 | + |
| 566 | + >>> t_22 = time(22, 0, 0) |
| 567 | + >>> t_20 = time(20, 0, 0) |
| 568 | + |
| 569 | + >>> t_22 > t_20 |
| 570 | + True |
| 571 | + >>> t_22 == t_22 |
| 572 | + True |
| 573 | + >>> t_22 < t_20 |
| 574 | + False |
| 575 | + |
| 576 | +توجه داشته باشید که نمیتوان از عملگرهایی همچون ``-`` یا ``+`` برای یک شی از نوع ``datetime.time`` استفاده کرد. |
| 577 | + |
| 578 | + |
| 579 | +متدهای شی ساعت |
| 580 | +---------------------------- |
| 581 | + |
| 582 | +برخی از Instance methodهای یک شی ساعت پایتون به شرح زیر هستند: |
| 583 | + |
| 584 | + |
| 585 | + |
| 586 | +* **متد** ``replace`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.time.replace>`__]: با استفاده از این متد میتوان یک شی ساعت جدید همانند شی جاری ایجاد کرد ولی با کمی تغییرات:: |
| 587 | + |
| 588 | + replace(hour, minute, second, microsecond, tzinfo, *, fold) |
| 589 | + |
| 590 | + :: |
| 591 | + |
| 592 | + >>> from datetime import time |
| 593 | + |
| 594 | + >>> t_22 = time(hour=22, minute=22, second=22) |
| 595 | + |
| 596 | + >>> t_20 = t_22.replace(hour=20, minute=20) |
| 597 | + >>> t_20 |
| 598 | + datetime.time(20, 20, 22) |
| 599 | + |
| 600 | + |
543 | 601 |
|
544 | 602 |
|
545 | 603 | کلاس ``datetime.datetime`` |
|
0 commit comments