|
298 | 298 |
|
299 | 299 | | |
300 | 300 |
|
301 | | -**۵- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.fromisocalendar>`__] از کلاس ``datetime.date`` (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر میباشند. در واقع این متد معادل ISO calendar [`ویکیپدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.date`` را برمیگرداند. در این استاندارد، یک سال شامل ۵۲ هفته میباشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه میگردد:: |
| 301 | +**۵- با استفاده از کلاس متد** ``fromisocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.fromisocalendar>`__] از کلاس ``datetime.date`` (البته از نسخه 3.8 پایتون به بعد)، در تعریف این متد سه پارامتر از نوع ``int`` قرار داده شده است که از سمت چپ به ترتیب معرف سال، شماره هفته در سال و شماره روز از هفته مورد نظر میباشند. در واقع این متد معادل ISO calendar [`ویکیپدیا <https://en.wikipedia.org/wiki/ISO_week_date>`__] یک تاریخ مشخص را دریافت و یک شی معادل از کلاس ``datetime.date`` را برمیگرداند. در این استاندارد، یک سال شامل ۵۲ هفته میباشد که روزهای هر هفته نیز از روز دوشنبه (Monday) با شماره یک محاسبه میگردد (دوشنبه:۱، سهشنبه:۲، ... یکشنبه:۷):: |
302 | 302 |
|
303 | 303 | date.fromisocalendar(year, week, day) |
304 | 304 |
|
|
313 | 313 | >>> d = date.fromisocalendar(2021, 14, 3) # Wednesday, April 7, 2021 |
314 | 314 |
|
315 | 315 |
|
| 316 | +مقایسه دو شی تاریخ |
| 317 | +---------------------------- |
| 318 | +دو شی ``datetime.date`` پایتون قابلیت مقایسه با یکدیگر را دارند. همچنین میتوان با استفاده از یک شی ``datetime.timedelta`` مقدار یک شی تاریخ را به جلو یا عقب هدایت کرد: |
| 319 | + |
| 320 | + |
| 321 | +:: |
| 322 | + |
| 323 | + >>> from datetime import date, timedelta |
| 324 | + |
| 325 | + >>> today = date(2021, 4, 9) |
| 326 | + |
| 327 | + >>> yesterday = today - timedelta(days=1) |
| 328 | + >>> yesterday |
| 329 | + datetime.date(2021, 4, 8) |
| 330 | + |
| 331 | + >>> today > yesterday |
| 332 | + True |
| 333 | + >>> today == today |
| 334 | + True |
| 335 | + >>> today < yesterday |
| 336 | + False |
| 337 | + >>> today == yesterday + timedelta(days=1) |
| 338 | + True |
| 339 | + |
| 340 | + >>> today - yesterday |
| 341 | + datetime.timedelta(days=1) |
| 342 | + |
| 343 | +توجه داشته باشید حاصل تفاضل دو شی تاریخ پایتون یک شی از نوع ``datetime.timedelta`` خواهد بود! |
| 344 | + |
| 345 | + |
| 346 | +متدهای شی تاریخ |
| 347 | +---------------------------- |
| 348 | + |
| 349 | +برخی از Instance methodهای یک شی تاریخ پایتون به شرح زیر هستند: |
| 350 | + |
| 351 | + |
| 352 | +* **متد** ``toordinal`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.toordinal>`__]: معادل proleptic Gregorian ordinal از مقدار تاریخ شی را برمیگرداند:: |
| 353 | + |
| 354 | + >>> from datetime import date |
| 355 | + |
| 356 | + >>> today = date(2021, 4, 9) |
| 357 | + >>> today.toordinal() |
| 358 | + 737889 |
| 359 | + |
| 360 | + |
| 361 | + |
| 362 | +* **متد** ``isoformat`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isoformat>`__]: معادل مقدار تاریخ شی را در قالب استاندارد ISO 8601 برمیگرداند:: |
| 363 | + |
| 364 | + >>> from datetime import date |
| 365 | + |
| 366 | + >>> today = date(2021, 4, 9) |
| 367 | + >>> today.isoformat() |
| 368 | + '2021-04-09' |
| 369 | + |
| 370 | + |
| 371 | +* **متد** ``isocalendar`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isocalendar>`__]: معادل ISO calendar از مقدار تاریخ شی را برمیگرداند:: |
| 372 | + |
| 373 | + >>> from datetime import date |
| 374 | + |
| 375 | + >>> today = date(2021, 4, 9) # Friday, April 9, 2021 |
| 376 | + >>> today.isocalendar() |
| 377 | + (2021, 14, 5) |
| 378 | + |
| 379 | + از پایتون نسخه 3.9 نوع خروجی این متد به صورت زیر تغییر کرده است:: |
| 380 | + |
| 381 | + |
| 382 | + >>> today.isocalendar() |
| 383 | + datetime.IsoCalendarDate(year=2021, week=14, weekday=5) |
| 384 | + |
| 385 | + |
| 386 | + |
| 387 | +* **متد** ``weekday`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isocalendar>`__]: شماره روز از هفته جاری را برمیگرداند. دوشنبه:صفر، سهشنبه:۱ ... یکشنبه:۶:: |
| 388 | + |
| 389 | + >>> from datetime import date |
| 390 | + |
| 391 | + >>> today = date(2021, 4, 9) # Friday, April 9, 2021 |
| 392 | + >>> today.weekday() |
| 393 | + 4 |
| 394 | + |
| 395 | + |
| 396 | + |
| 397 | +* **متد** ``isoweekday`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.isoweekday>`__]: شماره روز از هفته جاری را بر اساس استاندارد ISO calendar برمیگرداند. دوشنبه:۱، سهشنبه:۲ ... یکشنبه:۷:: |
| 398 | + |
| 399 | + >>> from datetime import date |
| 400 | + |
| 401 | + >>> today = date(2021, 4, 9) # Friday, April 9, 2021 |
| 402 | + >>> today.isoweekday() |
| 403 | + 5 |
| 404 | + |
| 405 | + |
| 406 | + |
| 407 | + |
| 408 | +* **متد** ``replace`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.date.replace>`__]: با استفاده از این متد میتوان یک شی تاریخ جدید همانند شی جاری ایجاد کرد ولی با کمی تغییرات:: |
| 409 | + |
| 410 | + replace(year, month, day) |
| 411 | + |
| 412 | + :: |
| 413 | + |
| 414 | + >>> from datetime import date |
| 415 | + |
| 416 | + >>> today = date(2021, 4, 9) |
| 417 | + |
| 418 | + >>> another_day = today.replace(day=22) |
| 419 | + >>> another_day |
| 420 | + datetime.date(2021, 4, 22) |
| 421 | + |
| 422 | + |
| 423 | + |
316 | 424 | کلاس ``datetime.time`` |
317 | 425 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
318 | 426 |
|
|
0 commit comments