Dalam Python, kaedah strptime() berfungsi sebagai pilihan yang berdaya maju untuk menukar rentetan cap masa kepada objek datetime. Walau bagaimanapun, menghadapi ralat semasa cuba mengendalikan offset masa selalunya boleh menyebabkan kekecewaan. Artikel ini bertujuan untuk menjelaskan isu khusus ini dan menyediakan penyelesaian yang boleh dilaksanakan.
Apabila berurusan dengan cap waktu yang termasuk offset masa, menggunakan %z dalam rentetan format untuk strptime() mungkin tidak selalu menghasilkan hasil yang diingini. Ini berpunca daripada fakta bahawa fungsi time.strptime() asas tidak mempunyai sokongan untuk kod format tertentu ini. Untuk mengatasi cabaran ini, pertimbangkan untuk meneroka pendekatan alternatif:
Abaikan Zon Waktu semasa Penghuraian:
Jika maklumat zon waktu tidak penting untuk aplikasi anda, huraikan cap waktu rentetan tanpa mengambil kira offset adalah penyelesaian yang mudah. Untuk mencapai ini, hanya potong rentetan masa untuk mengalih keluar offset sebelum menggunakan strptime():
time_obj = datetime.datetime.strptime(time_str[:19], '%Y-%m-%dT%H:%M:%S')
Gunakan Modul dateutil:
Untuk situasi di mana anda memerlukan butiran zon waktu, modul dateutil menawarkan alat yang berharga. Fungsi parse()nya mengendalikan zon waktu dengan berkesan, membolehkan anda memperoleh objek datetime yang diingini:
from dateutil.parser import parse time_obj = parse(time_str)
Selain itu, bagi mereka yang menggunakan Python 3.2 atau lebih baru, %z boleh digunakan dengan strptime(), dengan syarat yang terakhir titik bertindih dalam input dialih keluar, dan tanda sempang sebelum %z juga dihapuskan:
datetime.datetime.strptime(''.join(time_str.rsplit(':', 1)), '%Y-%m-%dT%H:%M:%S%z')
Dengan memanfaatkan penyelesaian ini, anda boleh menukar cap masa dengan offset masa dengan berkesan kepada objek datetime dalam Python dengan berkesan. Sama ada anda mengutamakan kecekapan atau memerlukan pemeliharaan maklumat zon waktu, penyelesaian ini memperkasakan anda untuk mencapai hasil yang anda inginkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Cap Masa dengan Offset Masa kepada Objek Datetime dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!