Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menukar Objek Tarikh Python dengan betul kepada Cap Waktu UTC?

Bagaimana untuk Menukar Objek Tarikh Python dengan betul kepada Cap Waktu UTC?

Susan Sarandon
Susan Sarandonasal
2024-12-15 08:50:10777semak imbas

How to Correctly Convert Python Date Objects to UTC Timestamps?

Menukar Objek Tarikh kepada Cap Masa UTC dalam Python

Dalam banyak senario, pengendalian tarikh dan masa dalam Python memerlukan menukarkannya kepada cap masa UTC untuk penyepaduan yang lancar dengan sistem atau rangka kerja lain yang beroperasi pada Universal Coordinated Masa. Walau bagaimanapun, proses penukaran ini mungkin menghadapi halangan. Contohnya, coretan di bawah menghasilkan hasil yang tidak dijangka:

import datetime

d = datetime.date(2011, 01, 01)  # A date object
timestamp = datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))

print(timestamp)  # Output: datetime.datetime(2010, 12, 31, 23, 0)

Hasil yang dijangkakan ialah cap waktu UTC untuk 1 Januari 2011, tetapi sebaliknya, kami mendapat 31 Disember 2010, pada 23:00 UTC.

Mari kita terokai penyelesaian kepada isu ini dan fahami cara mendapatkan UTC yang betul cap masa untuk objek tarikh dalam Python.

Mengendalikan Objek Tarikh dalam UTC

Objek tarikh yang disediakan d ialah objek tarikh Python asli yang mewakili tarikh tanpa sebarang maklumat masa . Untuk mendapatkan cap waktu UTC yang betul, kita perlu memastikan bahawa objek tarikh dipertimbangkan secara eksplisit dalam konteks UTC.

Berikut ialah dua kaedah untuk mencapai ini:

Pilihan 1: Menggunakan calendar.timegm()

Pendekatan ini mengandaikan bahawa objek tarikh d berada dalam UTC zon waktu.

import calendar

timestamp = calendar.timegm(d.timetuple())

print(timestamp)  # Output: 1293840000

Output ialah cap waktu UTC yang betul untuk 1 Januari 2011, pada 00:00.

Pilihan 2: Menggunakan datetime.timestamp()

Pilihan ini tersedia dalam Python versi 3.3 dan lebih baru dan memerlukan kami untuk menyatakan dengan jelas zon waktu UTC sebelum mendapatkan cap masa.

from datetime import timezone

d_utc = d.replace(tzinfo=timezone.utc)  # Explicitly specify UTC timezone
timestamp = d_utc.timestamp()

print(timestamp)

Output adalah konsisten dengan pendekatan sebelumnya.

Menukar Objek Masa Tarikh kepada Cap Waktu UTC

Jika anda mempunyai objek datetime dan bukannya objek tarikh, proses penukaran sedikit berbeza. Anda boleh menggunakan kaedah berikut:

Python 3.3

timestamp = dt.replace(tzinfo=timezone.utc).timestamp()

Python 3 (< 3.3)

timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)

Python 2

timestamp = (dt - datetime(1970, 1, 1)).total_seconds()

Ingat untuk berhati-hati dengan potensi isu titik terapung dan pastikan ketepatan cap masa anda.

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

Kenyataan:
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