Rumah >Peranti teknologi >industri IT >Memahami tarikh dan masa python, dengan contoh
Bekerja dengan masa dan tarikh tidak dapat dielakkan apabila membina projek kehidupan sebenar, dan terdapat banyak kes penggunaan untuk mereka. Syukurlah, Python mempunyai beberapa modul yang memudahkan untuk bekerja dengan tarikh dan masa sepanjang masa waktu.
Kod untuk tutorial ini boleh didapati di GitHub .
Kandungan:
Fungsi masa () mengembalikan masa semasa dalam beberapa saat sejak permulaan zaman set sebagai nombor titik terapung. Masa yang digunakan bermula pada 1 Januari 1970, 00:00:00 (UTC):
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>
fungsi gmtime () mengembalikan struct_time di UTC dari masa yang dinyatakan dalam beberapa saat sejak permulaan zaman. A Struct_time adalah sejenis urutan nilai masa dengan antara muka tuple yang dinamakan yang dikembalikan oleh gmtime (), localtime (), dan strptime ():
Time <span>in sceconds from epoch 1680712853.0801558</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>
Fungsi Tempatan () mengembalikan struct_time dalam masa tempatan dari masa yang dinyatakan dalam beberapa saat sejak permulaan zaman:
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>
Kaedah CTime () menukarkan masa dalam beberapa saat dari awal zaman ke format rentetan. Sekiranya tiada hujah yang diserahkan kepada fungsi, ia mengembalikan rentetan masa untuk masa semasa dalam beberapa saat:
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>
kaedah strftime () menukarkan struct_time ke rentetan masa seperti yang ditentukan oleh argumen format yang diberikan:
Time string: Thu Apr <span>20 01:46:24 2023</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_tuple <span>= time_module.gmtime() </span>time_format <span>= "%y/%m/%d %I:%M:%S %p" </span> time_in_string <span>= time_module.strftime(time_format, time_tuple) </span> <span>print("Time expressed as formatted string:", time_in_string)</span>
fungsi tidur () menangguhkan pelaksanaan benang untuk bilangan detik yang ditentukan:
Time expressed as formatted string: <span>23/04/20 04:40:04 PM</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> <span>for i in range(5): </span> local_time <span>= time_module.localtime() </span> seconds <span>= local_time.tm_sec </span> <span>print(seconds) </span> time_module<span>.sleep(2)</span>
Dalam kod di atas, nombor 2 diluluskan sebagai argumen fungsi tidur (), yang menyebabkan gelung melambatkan dua saat sebelum pelaksanaan. Nombor yang output mengesahkan kod kami.
Modul DateTime membekalkan kelas untuk memanipulasi tarikh dan masa.
Kelas -kelas ini adalah penting untuk memanipulasi, pengekstrakan, dan pemformatan output yang mudah, masa dan tarikh. Biasanya, tarikh dan masa tidak dianggap jenis data dalam Python, tetapi mereka adalah objek tarikh dan masa kelas modul DateTime. Kelas DateTime juga mempunyai kaedah yang berbeza untuk pengendalian tarikh dan objek masa.
Untuk mendapatkan tarikh dan masa semasa, import kelas DateTime dari modul DateTime. Kelas DateTime mempunyai kaedah, sekarang (), yang mengembalikan tarikh dan masa semasa:
<span>49 </span><span>51 </span><span>53 </span><span>55 </span><span>57</span>
Berikut adalah output kod di atas:
<span>from datetime import datetime </span> current_date_time <span>= datetime.now() </span><span>print(current_date_time)</span>
Untuk mendapatkan tarikh semasa, import kelas tarikh dari modul DateTime. Kelas tarikh mempunyai kaedah, hari ini (), yang mengembalikan tarikh semasa:
<span>2023-04-20 13:47:02.362424</span>
Berikut adalah output kod di atas:
<span>from datetime import date </span> current_date <span>= date.today() </span><span>print(current_date)</span>
Modul DateTime kini mempunyai enam kelas, masing -masing dengan kaedah yang berbeza untuk memanipulasi tarikh dan objek masa. Kelas disenaraikan seperti berikut:
Objek tarikh boleh diterapkan seperti berikut:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>Pembina objek tarikh mengambil tiga argumen integer dan harus berada dalam julat yang ditentukan:
tarikh atau objek .
Apabila hujah-hujah itu keluar dari jarak jauh, ia melemparkan nilai Valueerror, dan argumen bukan integer membuang TypeError.Contoh: Buat objek tarikh
Time <span>in sceconds from epoch 1680712853.0801558</span>Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>Contoh: Dapatkan tarikh semasa
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>kaedah hari ini () akan mengembalikan tarikh tempatan, manakala kaedah CTime () menjadikan tarikh sebagai rentetan. Inilah output kod di atas:
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>Contoh: Buat tarikh dari format ISO
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
NOTA: ISO 8601 adalah format piawai untuk menyampaikan tarikh dan masa tanpa membuat kekeliruan di seluruh kawasan atau zon waktu. ISO 8601 mengambil format yyyy-mm-dd.
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>Contoh: Buat objek tarikh dari rentetan
Time string: Thu Apr <span>20 01:46:24 2023</span>Berikut adalah output kod di atas:
<span>import time as time_module </span> time_tuple <span>= time_module.gmtime() </span>time_format <span>= "%y/%m/%d %I:%M:%S %p" </span> time_in_string <span>= time_module.strftime(time_format, time_tuple) </span> <span>print("Time expressed as formatted string:", time_in_string)</span>Contoh: Dapatkan tahun, bulan, hari dari objek tarikh
Berikut adalah output kod di atas:
Time expressed as formatted string: <span>23/04/20 04:40:04 PM</span>
Kelas Masa
<span>import time as time_module </span> <span>for i in range(5): </span> local_time <span>= time_module.localtime() </span> seconds <span>= local_time.tm_sec </span> <span>print(seconds) </span> time_module<span>.sleep(2)</span>
Objek tarikh boleh diterapkan seperti berikut:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>
Objek masa boleh diterapkan tanpa sebarang argumen. Semua argumen adalah pilihan dengan nilai lalai 0, kecuali tzinfo, yang tidak ada. Semua argumen mestilah bilangan bulat dalam julat yang ditentukan, sementara argumen Tzinfo harus menjadi contoh subkelas Tzinfo:
Apabila hujah -hujah yang keluar dari julat diserahkan kepada pembina, ia menimbulkan nilai.
Untuk membuat objek masa, mengimport kelas masa dari modul DateTime. Lulus argumen selama berjam -jam, minit, saat, mikroseconds dan tzinfo. Ingat bahawa semua hujah adalah pilihan, jadi apabila tiada hujah yang diserahkan kepada pembina, objek masa kembali 00:00:00:
Time <span>in sceconds from epoch 1680712853.0801558</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>
Objek masa boleh dibuat dari rentetan masa dalam format ISO 8601. Gunakan kaedah fromIsOformat () kelas masa untuk melakukan ini:
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>
Untuk membuat objek masa, lulus rentetan tarikh dan format yang sepadan dengan kaedah strpTime (). Ekstrak masa dengan menggunakan masa () kaedah objek DateTime yang dikembalikan:
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>
Untuk mengekstrak nilai selama berjam -jam, minit, saat dan mikroseconds, gunakan atribut jam, minit, kedua, dan mikrosecond objek masa:
Time string: Thu Apr <span>20 01:46:24 2023</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_tuple <span>= time_module.gmtime() </span>time_format <span>= "%y/%m/%d %I:%M:%S %p" </span> time_in_string <span>= time_module.strftime(time_format, time_tuple) </span> <span>print("Time expressed as formatted string:", time_in_string)</span>
Objek DateTime adalah objek tunggal yang mengandungi semua maklumat dari objek tarikh dan objek masa.
Objek DateTime boleh diterapkan seperti berikut:
Time expressed as formatted string: <span>23/04/20 04:40:04 PM</span>
Pembina DateTime memerlukan hujah tahun, bulan dan hari. Lalai Tzinfo tidak ada atau contoh subkelas Tzinfo. Argumen masa adalah pilihan, tetapi hujah -hujah mestilah bilangan bulat dan dalam julat:
ValueError dibangkitkan jika argumen berada di luar jangkauan.
Untuk membuat objek DateTime, import kelas DateTime dari modul DateTime dan lulus argumen berikut:
<span>import time as time_module </span> <span>for i in range(5): </span> local_time <span>= time_module.localtime() </span> seconds <span>= local_time.tm_sec </span> <span>print(seconds) </span> time_module<span>.sleep(2)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>
Untuk mendapatkan tarikh dan masa tempatan semasa, gunakan kaedah sekarang () kelas DateTime:
Time <span>in sceconds from epoch 1680712853.0801558</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>
Untuk membuat objek DateTime dari rentetan masa tarikh dalam format ISO 8601, gunakan kaedah FRARISOFORMAT () kelas DateTime:
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
NOTA: Jika argumen rentetan tarikh diluluskan ke dalam kaedah fromIsOformat () bukanlah rentetan format ISO yang sah, pengecualian ValueError dinaikkan. Output tarikh di sini agak serupa dengan hasil yang diperoleh dari datetime.now ().
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>Contoh: Dapatkan atribut tarikh dan masa dari objek DateTime
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>
NOTA: Nilai atribut lalai untuk tzinfo tidak ada, kerana tidak ada argumen objek yang diluluskan, dan lipatan akan kembali 0 secara lalai. Untuk lebih lanjut mengenai atribut lipatan (yang diperkenalkan dalam versi Python 3.6), lihat dokumen.
Kelas TimedeltaObjek Timedelta dapat diterapkan seperti berikut:
Time string: Thu Apr <span>20 01:46:24 2023</span>Semua argumen adalah pilihan, dengan nilai lalai 0. Integer atau terapung, nombor positif atau negatif adalah argumen yang sah untuk pembina.
argumen ditukar seperti berikut:
Contoh: Buat objek timedelta
<span>import time as time_module </span> time_tuple <span>= time_module.gmtime() </span>time_format <span>= "%y/%m/%d %I:%M:%S %p" </span> time_in_string <span>= time_module.strftime(time_format, time_tuple) </span> <span>print("Time expressed as formatted string:", time_in_string)</span>Berikut adalah output kod di atas:
Time expressed as formatted string: <span>23/04/20 04:40:04 PM</span>python Formatting DateTime
pemformatan DateTime boleh dilakukan dengan kaedah strftime (). Kaedah strftime () adalah kaedah contoh masa, tarikh dan kelas datetime, yang bermaksud kita perlu membuat objek tarikh, masa atau datetime untuk menggunakan kaedah tersebut. Kaedah ini mengambil kod format yang diberikan sebagai hujah, dan mengembalikan rentetan masa, tarikh atau masa dari dalam format yang dikehendaki.
Tandatangan kaedah kelihatan seperti ini:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>
Biasanya kod format rentetan diluluskan sebagai argumen kepada kaedah strftime () untuk format tarikh. Beberapa kod format adalah seperti berikut:
Jadual yang lebih terperinci dengan kod format boleh didapati di Dokumen Python.
Sama seperti dalam contoh sebelumnya, kita boleh lulus argumen rentetan format tarikh dan output masa yang dikehendaki ke kaedah strftime ():
Time <span>in sceconds from epoch 1680712853.0801558</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>
Tidak seperti strftime (), strptime () adalah kaedah kelas datetime, yang bermaksud ia boleh digunakan tanpa membuat objek kelas. Kaedah mengembalikan objek DateTime dari rentetan dan format tarikh tertentu.
Tandatangan kaedah kelihatan seperti ini:
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
kod format rentetan diluluskan sebagai argumen kepada kaedah strpTime () untuk format tarikh.
Untuk membuat objek DateTime, kami akan lulus dua argumen ke kaedah strptime (), rentetan tarikh dan format yang sepadan. A ValueError dinaikkan apabila rentetan tarikh tidak sepadan dengan format yang disediakan:
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>
Berikut adalah output kod di atas:
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Kelas Timedelta dalam Python digunakan untuk mengira perbezaan antara tarikh, mengira perbezaan masa antara tarikh tertentu, dan juga melakukan pengiraan lain menggunakan unit masa tertentu (seperti minggu atau jam).
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>
Berikut adalah output kod di atas:
Time string: Thu Apr <span>20 01:46:24 2023</span>
Dari contoh di atas, kita mula -mula mendapat tarikh dan masa tempatan semasa dan objek timedelta tujuh hari. Kerana Timedelta menyokong operasi seperti tambahan, kami menambah objek DateTime dan objek Timedelta untuk mendapatkan hari masa depan dalam tujuh hari. Jika tarikh semasa kami ialah 2023-04-20, dalam tujuh hari tarikhnya akan menjadi 2023-04-27.
<span>import time as time_module </span> time_tuple <span>= time_module.gmtime() </span>time_format <span>= "%y/%m/%d %I:%M:%S %p" </span> time_in_string <span>= time_module.strftime(time_format, time_tuple) </span> <span>print("Time expressed as formatted string:", time_in_string)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_seconds <span>= time_module.time() </span><span>print("Time in sceconds from epoch", time_in_seconds)</span>
Dalam coretan kod di atas, kami telah mencipta dua objek Timedelta, time_delta1 dan time_delta2, dan mengira perbezaan di antara mereka.
Time <span>in sceconds from epoch 1680712853.0801558</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> utc_time_in_seconds <span>= time_module.gmtime() </span><span>print("Time struct in UTC", utc_time_in_seconds)</span>
Seperti yang dilihat di atas, objek Timedelta menyokong operasi tambahan, dan hasilnya adalah output ke konsol. Objek Objek Timedelta menyokong operasi seperti penolakan, pendaraban, dan pembahagian.
Penggunaan zon waktu diperlukan jika kita ingin membuat objek tarikh dan masa yang sedar. Objek masa atau tarikh yang sedar termasuk maklumat mengenai zon waktu. Ia juga penting untuk memaparkan objek masa atau tarikh berhubung dengan rantau tertentu.
ZoneInfo adalah modul Python terbina dalam untuk bekerja dengan zon waktu.
Time struct <span>in UTC: time.struct_time(tm_year=2023, tm_mon=3, tm_mday=16, tm_hour=14, tm_min=47, tm_sec=28, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output untuk kod di atas:
<span>import time as time_module </span> local_time <span>= time_module.localtime() </span><span>print("Time struct in local time:", local_time)</span>
Pertama, kami mengimport kelas DateTime dari Modul DateTime dan ZoneInfo dari modul ZoneInfo. Kami membuat objek ZoneInfo dan kemudian objek DateTime, tetapi kali ini kami lulus objek zon TZ ke kaedah sekarang ().
Apabila kita menyemak nilai atribut tzinfo, ia mengembalikan nama zon waktu Afrika/accra, tidak ada.
Time struct <span>in local time: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=15, tm_min=46, tm_sec=15, tm_wday=3, tm_yday=75, tm_isdst=0)</span>
Berikut adalah output kod di atas:
<span>import time as time_module </span> time_in_secs <span>= 1678671984.939945 </span> time_string <span>= time_module.ctime(time_in_secs) </span><span>print("Time string: ",time_string)</span>
Untuk menukar antara zon waktu, kami menggunakan kaedah astimezone () objek DateTime, melewati objek zon waktu baru. AstimeZone () mengembalikan objek DateTime baru dengan maklumat zon waktu yang dikemas kini.
Menjejaki masa adalah aspek penting dalam kehidupan seharian kita, dan ini juga diterjemahkan ke dalam pengaturcaraan. Apabila kita membina projek dunia nyata, selalu ada keperluan untuk menyimpan log masa untuk aktiviti pengguna seperti log masuk dan mendaftar keluar, antara kes penggunaan lain. Ia juga penting untuk meletakkan setem masa pada kandungan yang dijana dalam talian dan memaparkan masa dan tarikh mengikut rantau pengguna atau zon waktu.
Untuk menguruskan masa dan tarikh yang lebih baik dalam program atau aplikasi kami, Python menyediakan modul masa dan datetime. Modul-modul ini mempunyai fungsi, kelas dan kaedah untuk menguruskan tugas yang berkaitan dengan masa. Dalam artikel ini, kami telah menyerlahkan beberapa fungsi dan kaedah yang biasa digunakan, memberikan contoh bagaimana mereka boleh digunakan.
Kod untuk tutorial ini boleh didapati di GitHub .
Dalam python, anda boleh menukar rentetan ke tarikh menggunakan fungsi strptime modul DateTime. Fungsi ini mengambil dua argumen: rentetan yang anda mahu tukar dan kod format yang sepadan dengan format tarikh rentetan. Sebagai contoh, jika anda mempunyai rentetan tarikh "2022-03-01" dalam format "YYYY-MM-DD", anda boleh menukarnya ke tarikh seperti ini:
dari DateTime Import DateTime
date_string = "2022-03-01"
date_object = datetime.strptime (date_string, "%y-%m-%d")
dari DateTime Import DateTime
current_datetime = datetime.now ()
cetak (current_datetime)
dari DateTime Import DateTime
current_datetime = datetime.now ()
formatted_date = current_datetime. strftime ("%y-%m-%d")
cetak (formatted_date)
current_date = datetime.now ()
new_date = current_date timedelta (hari = 5)
cetak (new_date)
Bagaimana saya boleh membandingkan dua tarikh dalam python?
date1 = DateTime (2022, 3, 1)
date2 = DateTime (2022, 4, 1)
jika tarikh1
bagaimana saya boleh mendapatkan hari dalam seminggu di python? Minggu sebagai integer (di mana hari Isnin adalah 0 dan Ahad adalah 6). Berikut adalah cara anda boleh menggunakannya:
cetak (day_of_week) Bagaimanakah saya boleh menukar tarikh ke timestamp di Python? Berikut adalah contoh:
dari DateTime Import DateTime
current_date = datetime.now ()
timestamp = current_date.timestamp ()
cetak (timestamp)
Modul DateUtil Python menyediakan fungsi parser.parse (), yang boleh menghuraikan tarikh dari rentetan. Berikut adalah cara anda boleh menggunakannya:
dari dateUtil import parser
date_string = "2022-03-01"
date_object = parser.parse (date_string)
cetak (date_object)
dari DateTime Import DateTime
current_time = datetime.now (). Time ()
cetak (current_time)
timestamp = 1646332800
date_object = datetime.fromtimestamp (timestamp)
cetak (date_object)
Atas ialah kandungan terperinci Memahami tarikh dan masa python, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!