Menambah Detik pada datetime.time dalam Python
Menambah nombor integer saat pada nilai datetime.time dalam Python tidak serta-merta mudah . Percubaan untuk menambah timedelta atau objek datetime.time yang lain mengakibatkan ralat.
Pendekatan Naif
Percubaan asas seperti:
<code class="python">datetime.time(11, 34, 59) + 3 datetime.time(11, 34, 59) + datetime.timedelta(0, 3) datetime.time(11, 34, 59) + datetime.time(0, 0, 3)</code>
semua gagal dengan ralat jenis.
Penukaran Manual
Satu penyelesaian melibatkan penukaran datetime.time kepada saat, menambah saat yang dikehendaki dan kemudian membina semula objek datetime.time:
<code class="python">def add_secs_to_time(timeval, secs_to_add): secs = timeval.hour * 3600 + timeval.minute * 60 + timeval.second secs += secs_to_add return datetime.time(secs // 3600, (secs % 3600) // 60, secs % 60)</code>
Menggunakan datetime.datetime
Kaedah yang lebih mudah ialah menggunakan objek datetime.datetime penuh, menetapkannya kepada tarikh tiruan dan kemudian menggunakan masa () kaedah untuk mendapatkan hanya nilai masa. Contohnya:
<code class="python">a = datetime.datetime(100, 1, 1, 11, 34, 59) b = a + datetime.timedelta(0, 3) print(a.time()) print(b.time())</code>
Hasil dalam:
11:34:59 11:35:02
Sebagai alternatif, anda boleh menggunakan:
<code class="python">b = a + datetime.timedelta(seconds=3)</code>
Fungsi Tersuai
Jika fungsi tersuai diingini, anda boleh menentukan satu yang menggunakan kaedah addSecs:
<code class="python">import datetime def addSecs(tm, secs): fulldate = datetime.datetime(100, 1, 1, tm.hour, tm.minute, tm.second) fulldate = fulldate + datetime.timedelta(seconds=secs) return fulldate.time()</code>
Kaedah ini menerima objek datetime.time dan integer yang mewakili bilangan saat untuk ditambah, mengembalikan masa diubah suai.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menambah saat pada objek datetime.time dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!