CodeGym /Kurslar /Python SELF AZ /Zaman intervallarının toplama və çıxılması avtomatlaşdırı...

Zaman intervallarının toplama və çıxılması avtomatlaşdırılmış cədvəl üçün

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Zaman intervallarına giriş

Böyük Albert Eynşteyn dediyi kimi, zaman nisbidir, amma Python-dakı timedelta ilə o tam idarəolunan bir şeyə çevrilir. Hazır olun, zaman toplama və çıxma sənətini öyrənəcəksiniz ki, skriptləriniz İsveçrə saatları qədər dəqiq olsun.

Zaman intervalları ilə iş - təkcə bir bacarıq deyil, həm də kodunuzda zamanı idarə etmək sənətidir. Zaman intervalları bizə tarix və zaman obyektləri ilə toplama və çıxma əməliyyatları aparmağa imkan verir, bu isə avtomatlaşdırılmış tapşırıqlarda, məsələn, cədvəllərdə çox faydalıdır. Beləliklə, əgər bir gün kodunuzu real zaman hadisələrinə uyğunlaşdırmağı düşünmüsünüzsə, timedelta dünyasına xoş gəlmisiniz.

Niyə timedelta?

Təsəvvür edin, bir restorandasınız və yemək sifariş etdiniz, ofisianta deyirsiniz ki, 2 saatdan sonra geri dönəcəksiniz. Eynilə proqramlaşdırmada da - sizdə bir tarix və zaman varsa və onlarla riyazi əməliyyatlar aparırsınızsa, bu həmişə əlavə imkanlara gətirib çıxarır. timedelta isə məhz bu, kodunuza deməyə imkan verir: "Hey, bura bir-iki gün və bir neçə saat əlavə elə".

2. Python-da timedelta-dan istifadə

timedelta-nın əsasları

Python-da datetime modulu zaman intervallarını təsvir etmək üçün ideal olan timedelta sinfini təqdim edir. Gəlin timedelta-nı iş üstündə görək:

Python

from datetime import datetime, timedelta

# Cari tarix və zaman
now = datetime.now()

# 1 günlük zaman intervalları yaratma
one_day = timedelta(days=1)

# Bir gündən sonra tarix və zaman
tomorrow = now + one_day
print(f"Bu gün: {now}")
print(f"Sabah: {tomorrow}")

Gördüyünüz kimi, timedelta günləri, saatları, dəqiqələri, hətta saniyələri cari zamana asanlıqla əlavə etməyə imkan verir. Bu, tarixlərinizə bir az sehr əlavə etmək kimidir.

Zaman intervallarının çıxarılması

Zaman haqqında danışanda, vacib olan təkcə onu əlavə etmək deyil, həm də çıxarmaqdır. timedelta ilə iki hadisə arasında nə qədər zaman keçdiyini müəyyən edə bilərsiniz:

Python

# Hadisə tarixi
event_date = datetime(2023, 10, 15)

# Hadisədən yeddi gün əvvəlki tarix
seven_days_ago = event_date - timedelta(days=7)
print(f"Hadisədən yeddi gün əvvəl: {seven_days_ago}")

Bu, məhz sizin tapşırıqlarınızın zaman və məkan içində olması üçün lazım olan sehirdir.

3. Vaxt intervallarının avtomatlaşdırma üçün real ssenarilərdə tətbiqi

Tapşırıqların cədvəli

Artıq vaxt intervallarını manipulyasiya etmə təməllərini öyrəndik, gəlin tapşırıqların cədvəlini avtomatlaşdırmağın necə mümkün olduğunu nəzərdən keçirək. Cədvəl avtomatlaşdırılması məlumatların toplanması, ehtiyat nüsxələri və ya hesabatlar kimi skriptlərin mütəmadi işə salınması üçün faydalı ola bilər.

Sadə bir cədvəl yaradacağıq

Ssenarini nəzərdən keçirək, burada istəyirsiniz ki, tapşırığınız hər gün müəyyən vaxtda işə salınsın. Bunun üçün datetimetimedelta-dan istifadə edərək növbəti işə salınma vaxtını hesablaya bilərsiniz:

Python

from datetime import datetime, timedelta
import time

# Hədəf işə salınma vaxtını hər gün 18:00 olaraq təyin edirik
target_time = datetime.now().replace(hour=18, minute=0, second=0, microsecond=0)

while True:
    now = datetime.now()
    # Hadisə vaxtının gəldiyini yoxlayırıq
    if now >= target_time:
        # Burada tapşırığınızı yerinə yetirirsiniz
        print("Tapşırığı yerinə yetirmək vaxtıdır!")

        # İşə salınmanı növbəti günə saat 18:00-a keçiririk
        target_time += timedelta(days=1)
    else:
        # Növbəti işə salınma vaxtına qədər olan müddəti hesablayırıq və uzun fasilə veririk
        time_to_sleep = (target_time - now).total_seconds()
        print(f"Növbəti işə salınma {time_to_sleep/60:.2f} dəqiqədən sonra")
        time.sleep(time_to_sleep)

Növbəti hadisəyə qədər olan vaxtın hesablanması

Vaxt intervallarının başqa bir ümumi tətbiqi növbəti hadisəyə qədər olan vaxtın hesablanmasıdır, məsələn, müdürün ad gününə qədər (onu təbrik etməyi unutmayın ki, mükafatdan məhrum olmayasınız):

Python

# Növbəti hadisənin tarixi (Müdürün ad günü)
birthday = datetime(year=2023, month=12, day=25)

# Ad gününə qədər qalan vaxtın hesablanması
remaining_time = birthday - datetime.now()
print(f"Müdürün ad gününə qədər qaldı: {remaining_time.days} gün və {remaining_time.seconds // 3600} saat.")

4. Praktiki aspektlər və qarşısını almaq lazım olan səhvlər

datetimetimedelta ilə işləyərkən bəzən qarşısını almaq lazım olan situasiyalar və səhvlər yarana bilər.

Zaman zonalarının nəzərə alınması

Ən çox rast gəlinən səhvlərdən biri zaman zonalarının nəzərə alınmamasıdır. datetime standart olaraq lokal vaxtla işləyir, lakin zaman zonalarına nəzarət etmək üçün pytz kimi xarici modullardan istifadə etmək olar.

Zamanla işləyərkən səhv emalı

Zaman intervalları ilə proqramlaşdırma zamanı həmişə səhvlərin düzgün emalını unutmayın. Məsələn, əgər kodunuz başqa bir zaman zonasına aid serverdə işləyirsə və ya serveriniz zaman zonaları ilə bağlı problemlərlə üzləşirsə, belə halları həmişə nəzərə alın və kodunuzu müxtəlif şəraitlərdə sınaqdan keçirin.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION