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())
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())
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
Menukar datetime.datetime dalam UTC kepada POSIX Timestamp
Untuk objek datetime.datetime sudah dalam UTC, kaedah berikut tersedia:
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
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
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!