Konversi datetime ke utc python

Data dapat direpresentasikan dalam berbagai bentuk - dan cara mudah untuk merepresentasikan tanggal dan waktu adalah string. Namun, untuk bekerja dengan tanggal dan waktu ini secara aritmatika (seperti menghitung perbedaan waktu, menambah atau mengurangi waktu, dll.). ) - kita perlu mengonversinya menjadi objek ________________8

Salah satu sumber datetime berformat string yang paling umum adalah REST API yang mengembalikan string agnostik, yang kemudian dapat kita konversi ke format lain

Selain itu - zona waktu adalah masalah umum saat bekerja dengan objek datetime, jadi kita harus memikirkannya saat mengonversi juga

Dalam panduan ini - kita akan melihat cara mengonversi string tanggal/waktu menjadi objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 dengan Python, menggunakan modul
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 bawaan, tetapi juga memperhitungkan modul pihak ketiga seperti
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
1,
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
2 dan zona waktu Maya

Modul datetime terdiri dari tiga jenis objek yang berbeda.

import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
3,
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
4, dan
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8. Objek
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
_3 menyimpan tanggal,
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
4 menyimpan waktu, dan
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 menyimpan tanggal dan waktu

_______________1

Menjalankan kode ini akan menghasilkan

_______________

Ketika tidak ada pemformatan khusus yang diberikan, format string default digunakan, mis. e. format untuk "2022-12-0. 27. 03. 929149" dalam format ISO 8601. MM. SS. mmmmmm). Jika string input kami untuk membuat objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 berada dalam format ISO 8601 yang sama atau jika Anda mengetahui format yang akan Anda terima di awal, kami dapat dengan mudah mengurainya menjadi objek
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8

Menjalankannya akan mencetak tanggal, waktu, dan tanggal-waktu

_______________

Di sini, kami menggunakan metode

Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
_1, yang menerima dua argumen

  • Tanggal berformat string
  • Format argumen pertama

Menentukan format seperti ini membuat penguraian lebih cepat karena

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 tidak perlu mencoba dan menginterpretasikan formatnya sendiri, yang jauh lebih mahal secara komputasi. Nilai yang dikembalikan adalah tipe
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8

Dalam contoh kita,

Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
_4 adalah string input dan
Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
5 adalah format string tanggal kita. Nilai
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 yang dikembalikan disimpan sebagai
Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
7

Karena ini adalah objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8, kita dapat memanggil metode
Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
9 dan
"Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
"September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
"Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
"Mon, 21 March, 2015" -> "%a, %d %B, %Y"
"2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
0 langsung di atasnya. Seperti yang Anda lihat dari output, ini mencetak bagian 'tanggal' dan 'waktu' dari string input

Memformat Token

Sebaiknya luangkan waktu sejenak untuk memahami token format -

Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
5 dari sebelumnya

Setiap token mewakili bagian tanggal-waktu yang berbeda, seperti hari, bulan, tahun, hari dalam sebulan atau minggu, dll. Cukup luas untuk mengaktifkan berbagai pemformatan. Beberapa yang umum digunakan, yang juga pernah kami gunakan sebelumnya adalah

  • "Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
    "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
    "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
    "Mon, 21 March, 2015" -> "%a, %d %B, %Y"
    "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
    
    _2. Tahun (4 digit)
  • "Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
    "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
    "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
    "Mon, 21 March, 2015" -> "%a, %d %B, %Y"
    "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
    
    _3. Bulan
  • ___4. Hari dalam sebulan
  • "Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
    "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
    "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
    "Mon, 21 March, 2015" -> "%a, %d %B, %Y"
    "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
    
    _5. Jam (24 jam)
  • _______________6. Menit
  • "Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
    "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
    "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
    "Mon, 21 March, 2015" -> "%a, %d %B, %Y"
    "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
    
    _7. Detik
  • "Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
    "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
    "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
    "Mon, 21 March, 2015" -> "%a, %d %B, %Y"
    "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
    
    _8. Mikrodetik

Catatan. Semua token ini, kecuali tahunnya, diharapkan tidak terisi (mis. e. Agustus adalah bulan ke-8 dalam setahun.

Jika format string diketahui, string dapat dengan mudah diuraikan menjadi objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 menggunakan
Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
1. Mari kita lihat contoh non-sepele yang menerjemahkan dari satu format ke format lainnya

_______________

String masukan adalah satu format - "Jul. 20AM". Mengetahui format ini, kami memetakan elemen penyusun ke format ISO 8601 dan mengubahnya menjadi objek _______________8

_______________

Berikut adalah daftar singkat datetimes berformat string umum dan format yang sesuai untuk

Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
1

_______________

Anda dapat menguraikan string tanggal-waktu dalam format apa pun - selama Anda menggunakan string token format yang benar untuk masukan yang Anda terima

Penanganan tanggal-waktu menjadi lebih kompleks saat berhadapan dengan zona waktu. Semua contoh di atas sejauh ini naif terhadap zona waktu. Ini dikenal sebagai objek datetime naif

Namun, objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_8 berisi bidang persis untuk menyimpan data terkait zona waktu -
$ pip install pytz
5

Bidang

$ pip install pytz
_5 dimaksudkan untuk menjadi objek
$ pip install pytz
7, yang menunjukkan informasi zona waktu. Ini adalah
$ pip install pytz
8 secara default, dan menunjukkan bahwa objek datetime naif zona waktu. Pustaka eksternal yang sangat umum untuk menangani zona waktu adalah
$ pip install pytz
9. Anda juga dapat menyetel objek PyTz sebagai bidang
$ pip install pytz
5

Jika Anda belum memilikinya - instal via

_______________

Menggunakan PyTz, kita dapat membuat jangkar untuk waktu yang sadar zona waktu, seperti UTC

_______________

Keluaran

_______________

Ini bukan lagi jam 11 pagi, tapi jam 2 pagi, karena kami telah mengatur zona waktu beberapa jam ke belakang. Ini mengubah zona waktu dari datetime

import datetime as dt
import pytz

dtime = dt.datetime.now(pytz.utc)

print(dtime)
print(dtime.tzinfo)
1 adalah perbedaan antara waktu yang ditampilkan dan waktu UTC. Offset diatur ke
import datetime as dt
import pytz

dtime = dt.datetime.now(pytz.utc)

print(dtime)
print(dtime.tzinfo)
2. Ini adalah objek yang sadar zona waktu

Demikian pula, kita dapat mengganti interpretasi datetime yang sama di antara zona waktu. Mari kita konversi string, seperti "2022-06-2. 08. 00" ke datetime dan kemudian melokalkannya ke zona waktu "America/New_York"

_______________

Catatan. Pelokalan mengubah datetime naif zona waktu menjadi datetime sadar zona waktu, dan memperlakukan zona waktu sebagai zona waktu lokal. Dengan demikian, datetime tetap sama, tetapi mengingat zona waktu yang berbeda, itu tidak lagi mewakili titik waktu yang sama yang tidak terikat dari zona waktu

Kami mendapatkan nilai datetime yang sama, diimbangi dengan -0. 00 dibandingkan dengan waktu UTC

Current date/time: 2022-12-01 10:27:03.929149
0

17. 08 di Tokyo bukanlah titik waktu yang sama. 08 di New York. 17. 08 di Tokyo adalah. 08 di New York

Bagaimana cara menemukan semua kode/alias zona waktu?

Untuk menemukan semua zona waktu yang tersedia, periksa bidang

import datetime as dt
import pytz

dtime = dt.datetime.now(pytz.utc)

print(dtime)
print(dtime.tzinfo)
3

Current date/time: 2022-12-01 10:27:03.929149
1

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu

Current date/time: 2022-12-01 10:27:03.929149
2

Kita dapat mengonversi zona waktu objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 yang sadar zona waktu dari satu wilayah ke wilayah lain, alih-alih melokalkan waktu yang naif zona waktu melalui lensa beberapa zona waktu

Ini berbeda dari pelokalan, karena pelokalan mewakili titik waktu yang berbeda, tetapi mengubah zona waktu suatu objek mewakili titik waktu yang sama, melalui lensa yang berbeda

Current date/time: 2022-12-01 10:27:03.929149
3

Pertama, kami membuat objek datetime dengan waktu saat ini dan menetapkannya sebagai zona waktu "Amerika/New_York". Kemudian menggunakan metode

import datetime as dt
import pytz

dtime = dt.datetime.now(pytz.utc)

print(dtime)
print(dtime.tzinfo)
_5, kami telah mengonversi
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 ini menjadi zona waktu "Eropa/London". Kedua
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 akan mencetak nilai yang berbeda, menggunakan offset UTC sebagai tautan referensi di antara keduanya

Current date/time: 2022-12-01 10:27:03.929149
4

2. Tanggal 24 hari berikutnya di London adalah titik waktu yang sama dengan tanggal 21. 24 hari sebelumnya di New York karena London 5 jam lebih cepat

Seperti yang diharapkan, waktu tanggal berbeda karena jaraknya sekitar 5 jam

Modul

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 Python dapat mengubah semua jenis string yang berbeda menjadi objek
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8. Tetapi masalah utamanya adalah untuk melakukan ini, Anda perlu membuat string kode pemformatan yang sesuai yang dapat dipahami oleh
Date: 2022-07-17
Time: 09:20:00
Date-time: 2022-07-17 09:20:00
1. Membuat string ini membutuhkan waktu dan membuat kode lebih sulit dibaca

Sebagai gantinya, kita bisa menggunakan library pihak ketiga lainnya untuk mempermudah

Dalam beberapa kasus, pustaka pihak ketiga ini juga memiliki dukungan bawaan yang lebih baik untuk memanipulasi dan membandingkan tanggal-waktu, dan beberapa bahkan memiliki zona waktu bawaan, jadi Anda tidak perlu menyertakan paket PyTz tambahan

Mari kita lihat beberapa perpustakaan ini di bagian berikut

Modul dateutil adalah perpanjangan dari modul

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8. Salah satu keuntungannya adalah kita tidak perlu meneruskan kode parsing apa pun untuk mengurai string

Untuk mengonversi string secara otomatis ke datetime tanpa token format menggunakan

import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
1 Python

Current date/time: 2022-12-01 10:27:03.929149
5

Fungsi

2022-12-01 02:07:41.960920+00:00
UTC
_3 ini akan mengurai string secara otomatis. Anda tidak harus menyertakan string format apa pun. Mari kita coba parsing berbagai jenis string menggunakan
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
1

Current date/time: 2022-12-01 10:27:03.929149
6

Keluaran

Current date/time: 2022-12-01 10:27:03.929149
7

Anda dapat melihat bahwa hampir semua jenis string dapat diurai dengan mudah menggunakan modul _______________1

Meskipun ini nyaman, ingat sebelumnya bahwa harus memprediksi format membuat kode jauh lebih lambat, jadi jika kode Anda memerlukan kinerja tinggi maka ini mungkin bukan pendekatan yang tepat untuk aplikasi Anda

Maya juga membuatnya sangat mudah untuk mengurai string dan mengubah zona waktu. Untuk dengan mudah mengonversi string dengan Maya Python

Current date/time: 2022-12-01 10:27:03.929149
8

Keluaran

Current date/time: 2022-12-01 10:27:03.929149
_9

Untuk mengonversi waktu ke zona waktu yang berbeda

_______________0

Keluaran

_______________1

Sekarang bukankah itu mudah digunakan?

Keluaran

_______________2

Seperti yang Anda lihat, semua format tanggal berhasil diuraikan

Jika kami tidak memberikan info zona waktu, itu secara otomatis mengubahnya menjadi UTC. Oleh karena itu, penting untuk diperhatikan bahwa kami harus memberikan parameter

2022-12-01 02:07:41.960920+00:00
UTC
8 dan
2022-12-01 02:07:41.960920+00:00
UTC
9 jika waktunya tidak dalam UTC

Arrow adalah perpustakaan lain untuk menangani datetime dengan Python. Dan seperti sebelumnya dengan

2022-12-01 02:07:41.960920+00:00
UTC
_6, itu juga mengetahui format datetime secara otomatis. Setelah ditafsirkan, ia mengembalikan objek
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_8 Python dari objek
import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
2

Untuk dengan mudah mengubah string menjadi datetime menggunakan

import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
2 Python

_______________3

Keluaran

___4

Anda dapat menggunakan

import datetime

date_time_str = 'Jul 17 2022 9:20AM'
date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p')

print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
_2 untuk mengonversi zona waktu menggunakan metode
import datetime as dt
import pytz

date_time_str = '2022-06-29 17:08:00'
date_time_obj = dt.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S')

timezone = pytz.timezone('America/New_York')
timezone_date_time_obj = timezone.localize(date_time_obj)

print(timezone_date_time_obj)
print(timezone_date_time_obj.tzinfo)
5

_______________5

Keluaran

_______________6

String dikonversi ke wilayah "Amerika/New_York".

Sekarang, mari kita gunakan rangkaian string yang sama seperti yang telah kita gunakan di atas

Kode ini akan gagal untuk string tanggal-waktu yang telah dikomentari, yang merupakan lebih dari separuh contoh kita. Output untuk string lainnya adalah

_______________7

Untuk mengurai dengan benar string tanggal-waktu yang dikomentari, Anda harus meneruskan token format yang sesuai untuk memberikan petunjuk perpustakaan tentang cara menguraikannya

Kesimpulan

Pada artikel ini kami telah menunjukkan berbagai cara untuk mengurai string ke objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8 dengan Python. Anda dapat memilih perpustakaan Python
Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_8 default atau salah satu perpustakaan pihak ketiga yang disebutkan dalam artikel ini, di antara banyak lainnya

Masalah utama dengan paket default

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_8 adalah kita perlu menentukan kode parsing secara manual untuk hampir semua format string tanggal-waktu. Jadi, jika format string Anda berubah di masa mendatang, Anda mungkin juga harus mengubah kode Anda. Tetapi banyak perpustakaan pihak ketiga, seperti yang disebutkan di sini, tidak menanganinya secara otomatis

Satu lagi masalah yang kita hadapi adalah berurusan dengan zona waktu. Cara terbaik untuk menanganinya adalah selalu menyimpan waktu dalam database Anda sebagai format UTC dan kemudian mengonversinya ke zona waktu lokal pengguna bila diperlukan

Pustaka ini tidak hanya bagus untuk parsing string, tetapi juga dapat digunakan untuk berbagai jenis operasi terkait tanggal-waktu. Saya mendorong Anda untuk membaca dokumentasi untuk mempelajari fungsionalitas secara detail

Bagaimana cara mengonversi datetime ke UTC Python?

Bagaimana cara mengonversi datetime ke UTC?

Untuk mengonversi waktu di zona waktu non-lokal ke UTC, gunakan TimeZoneInfo. use the TimeZoneInfo. Metode ConvertTimeToUtc(DateTime, TimeZoneInfo) . Untuk mengonversi waktu yang offsetnya dari UTC diketahui, gunakan metode ToUniversalTime. Jika nilai instance tanggal dan waktu adalah waktu yang ambigu, metode ini mengasumsikan bahwa itu adalah waktu standar.

Bagaimana cara mengonversi datetime ke detik UTC dengan Python?

Untuk mengonversi datetime menjadi detik, kurangi input datetime dari epoch time . Untuk Python, waktu zaman dimulai pada. 00. 00 UTC pada 1 Januari. Pengurangan memberi Anda objek timedelta. Gunakan metode total_seconds() dari objek timedelta untuk mendapatkan jumlah detik sejak Zaman.

Bagaimana cara mengonversi Naive Datetime ke UTC dengan Python?

Untuk mengonversi waktu tanggal UTC yang naif, gunakan dt. ganti(tzinfo=pytz). utc) . ")