Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menukar Objek Python `datetime.date` dan `datetime.datetime` dengan tepat kepada Cap Waktu UTC?

Bagaimana untuk Menukar Objek Python `datetime.date` dan `datetime.datetime` dengan tepat kepada Cap Waktu UTC?

Patricia Arquette
Lepaskan: 2024-12-19 22:53:10
asal
523 orang telah melayarinya

How to Accurately Convert Python `datetime.date` and `datetime.datetime` Objects to UTC Timestamps?

Menukar datetime.date kepada UTC Timestamp dalam Python

Apabila berurusan dengan tarikh dalam Python, timbul keperluan untuk menukarkannya kepada cap waktu UTC untuk pelbagai aplikasi. Walau bagaimanapun, menggunakan kaedah konvensional seperti datetime.datetime.utcfromtimestamp(time.mktime(d)) boleh membawa kepada keputusan yang salah.

Menukar Tarikh UTC kepada Saat Sejak Epoch

Untuk tarikh d yang diwakili dalam UTC, formula yang betul untuk menukarnya kepada saat sejak zaman ialah:

timestamp1 = calendar.timegm(d.timetuple())
Salin selepas log masuk

Kaedah ini memastikan cap masa yang terhasil mewakili tarikh dalam UTC.

Menukar Tarikh Waktu Tempatan kepada Saat Sejak Epoch

Jika tarikh d berada dalam zon waktu tempatan, menggunakan mktime() mungkin menghasilkan keputusan yang salah. Untuk membetulkan perkara ini, kita boleh menggunakan:

timestamp2 = time.mktime(d.timetuple())
Salin selepas log masuk

Walau bagaimanapun, ambil perhatian bahawa cap waktu1 dan cap waktu2 mungkin berbeza jika tengah malam tempatan berbeza daripada tengah malam UTC.

Menukar datetime.date dalam UTC tanpa kalendar.timegm()

Untuk menukar datetime.date objek terus kepada cap waktu UTC, anda boleh menggunakan formula berikut:

timestamp = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * DAY
timestamp = (utc_date - date(1970, 1, 1)).days * DAY
Salin selepas log masuk

Menukar datetime.datetime dalam UTC kepada POSIX Timestamp

Untuk objek datetime.datetime sudah dalam UTC, kaedah berikut tersedia:

  • tawaran Python 3.3 datetime.timestamp():
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
Salin selepas log masuk
  • Python 3 (< 3.3):
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
Salin selepas log masuk
  • Python 2:
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
Salin selepas log masuk

Menukar Objek datetime Sedar kepada Cap Masa POSIX

Untuk objek masa tarikh yang sedar (masa tarikh dengan maklumat zon waktu), pendekatan berikut disyorkan:

timestamp = dt.timestamp() # Python 3.3+
timestamp = (dt - epoch) / timedelta(seconds=1) # Python 3
timestamp = (dt - epoch) // timedelta(seconds=1) # Python 3 integer timestamp
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Objek Python `datetime.date` dan `datetime.datetime` dengan tepat kepada Cap Waktu UTC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan