Bagaimana cara mengonversi tanggal dari satu zona waktu ke zona waktu lainnya dengan 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 menghapus waktu, dll. ) - kita perlu mengonversinya menjadi objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
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 tanggal/waktu string 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 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 Maya, yang memperhitungkan

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

import datetime
print(f'Current date/time: {datetime.datetime.now()}')

Menjalankan kode ini akan menghasilkan

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

Ketika tidak ada pemformatan khusus yang diberikan, format string default digunakan, mis. e. format untuk "2022-12-01 10. 27. 03. 929149" dalam format ISO 8601 (YYYY-MM-DDTHH. 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

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149

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 parsing 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
  • "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"
    
    _4. Hari bulan
  • "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)
  • "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"
    
    _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, dan nol-empuk ke

"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"
9)

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

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)

String input memiliki satu format - "17 Juli 2022 9. 20AM". Mengetahui format ini, kami memetakan elemen penyusun ke format ISO 8601 dan mengubahnya menjadi objek

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
8

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

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

"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"

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

Menangani tanggal-waktu menjadi lebih kompleks saat menangani 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
$ 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

$ pip install pytz

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

import datetime as dt
import pytz

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

print(dtime)
print(dtime.tzinfo)

Keluaran

2022-12-01 02:07:41.960920+00:00
UTC

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 sebagai jangkar koordinasi global. Kami telah menetapkan waktu dalam UTC, jadi offsetnya adalah
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-29 17. 08. 00" ke datetime dan kemudian melokalkannya ke zona waktu "America/New_York"

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)

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 -04. 00 dibandingkan dengan waktu UTC

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

17. 08 di Tokyo tidak sama dengan 17. 08 di New York. 17. 08 di Tokyo adalah 3. 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, yang merupakan daftar semua zona waktu yang tersedia

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 dari 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 satu 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. 24 hari berikutnya di London adalah titik waktu yang sama dengan 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 mengonversi 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

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

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

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
0

Keluaran

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_1

Sekarang bukankah itu mudah digunakan?

Keluaran

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_2

Seperti yang Anda lihat, semua format tanggal berhasil diuraikan

Jika kami tidak memberikan info zona waktu, itu secara otomatis mengubahnya menjadi UTC. Jadi, penting untuk dicatat 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

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_3

Keluaran

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_4

Dan inilah cara 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

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
5

Keluaran

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_6

Seperti yang Anda lihat, string tanggal-waktu 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

Date: 2022-12-01
Time: 10:27:03.929149
Date-time: 2022-12-01 10:27:03.929149
_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, 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 akan mendorong Anda untuk membaca dokumen untuk mempelajari fungsionalitas secara detail

Bagaimana Anda mengubah tanggal dari satu zona waktu ke zona waktu lainnya?

Untuk mengonversi instance ZonedDateTime dari satu zona waktu ke zona waktu lainnya, ikuti dua langkah berikut. .
Buat ZonedDateTime di zona waktu pertama. Anda mungkin sudah memilikinya di aplikasi Anda
Konversikan ZonedDateTime pertama di zona waktu kedua menggunakan metode withZoneSameInstant()

Bagaimana cara mengonversi datetime ke zona waktu tertentu?

Untuk melakukannya, kita akan menggunakan FindSystemTimeZoneById() dari kelas TimeZoneInfo . Fungsi ini menggunakan Id sebagai parameter untuk mengembalikan waktu yang setara dalam zona waktu yang dilewati. Dalam contoh di bawah ini, kami mengambil waktu sistem saat ini dan mengubahnya menjadi "Waktu Standar Tengah". DateTime currentTime = TimeZoneInfo.

Bagaimana cara mengonversi stempel waktu dengan zona waktu hingga saat ini dengan Python?

Cara kerjanya .
utcfromtimestamp(timestamp) akan memberi Anda datetime naif yang mewakili waktu dalam UTC. Anda kemudian dapat melakukan dt. ganti(tzinfo=pytz. .
fromtimestamp(timestamp, tz=None) , ketika tz bukan None , akan memberi Anda datetime yang setara dengan utcfromtimestamp(timestamp). ganti(tzinfo=zona waktu. UTC)

Bagaimana cara mengonversi datetime ke zona waktu UTC dengan Python?

Gunakan modul pytz, yang dilengkapi dengan daftar lengkap zona waktu + UTC. Cari tahu apa itu zona waktu lokal, buat objek zona waktu darinya, dan manipulasi serta lampirkan ke datetime yang naif. Terakhir, gunakan datetime. astimezone() metode untuk mengonversi datetime ke UTC .