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 8 Show 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
Modul datetime terdiri dari tiga jenis objek yang berbeda. 3, 4, dan 8. Objek _3 menyimpan tanggal, 4 menyimpan waktu, dan 8 menyimpan tanggal dan waktu
Menjalankan kode ini akan menghasilkan
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 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 8Menjalankannya akan mencetak tanggal, waktu, dan tanggal-waktu
Di sini, kami menggunakan metode _1, yang menerima dua argumen
Menentukan format seperti ini membuat parsing lebih cepat karena 8 tidak perlu mencoba dan menginterpretasikan formatnya sendiri, yang jauh lebih mahal secara komputasi. Nilai yang dikembalikan adalah tipe 8Dalam contoh kita, _4 adalah string input dan 5 adalah format string tanggal kita. Nilai 8 yang dikembalikan disimpan sebagai 7Karena ini adalah objek 8, kita dapat memanggil metode 9 dan 0 langsung di atasnya. Seperti yang Anda lihat dari output, ini mencetak bagian 'tanggal' dan 'waktu' dari string inputMemformat TokenSebaiknya luangkan waktu sejenak untuk memahami token format - 5 dari sebelumnyaSetiap 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
Catatan. Semua token ini, kecuali tahunnya, diharapkan tidak terisi (mis. e. Agustus adalah bulan ke-8, dan nol-empuk ke 9)Jika format string diketahui, string dapat dengan mudah diuraikan menjadi objek 8 menggunakan 1. Mari kita lihat contoh non-sepele yang menerjemahkan dari satu format ke format lainnya
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 8
Berikut adalah daftar singkat datetimes berformat string umum dan format yang sesuai untuk 1
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 _8 berisi bidang persis untuk menyimpan data terkait zona waktu - 5Bidang _5 dimaksudkan untuk menjadi objek 7, yang menunjukkan informasi zona waktu. Ini 8 secara default, dan menunjukkan bahwa objek datetime naif zona waktu. Pustaka eksternal yang sangat umum untuk menangani zona waktu adalah 9. Anda juga dapat menyetel objek PyTz sebagai bidang 5Jika 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 1 adalah perbedaan antara waktu yang ditampilkan dan waktu UTC sebagai jangkar koordinasi global. Kami telah menetapkan waktu dalam UTC, jadi offsetnya adalah 2. Ini adalah objek yang sadar zona waktuDemikian 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"
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 017. 08 di Tokyo tidak sama dengan 17. 08 di New York. 17. 08 di Tokyo adalah 3. 08 di New York
Untuk menemukan semua zona waktu yang tersedia, periksa bidang 3, yang merupakan daftar semua zona waktu yang tersedia 1Lihat 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 2Kita dapat mengonversi zona waktu dari objek 8 yang sadar zona waktu dari satu wilayah ke wilayah lain, alih-alih melokalkan waktu yang naif zona waktu melalui lensa beberapa zona waktuIni 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 3Pertama, kami membuat satu objek datetime dengan waktu saat ini dan menetapkannya sebagai zona waktu "Amerika/New_York". Kemudian menggunakan metode _5, kami telah mengonversi 8 ini menjadi zona waktu "Eropa/London". Kedua 8 akan mencetak nilai yang berbeda, menggunakan offset UTC sebagai tautan referensi di antara keduanya 42. 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 8 Python dapat mengonversi semua jenis string yang berbeda menjadi objek 8. Tetapi masalah utamanya adalah untuk melakukan ini, Anda perlu membuat string kode pemformatan yang sesuai yang dapat dipahami oleh 1. Membuat string ini membutuhkan waktu dan membuat kode lebih sulit dibaca
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 8. Salah satu keuntungannya adalah kita tidak perlu meneruskan kode parsing apa pun untuk mengurai stringUntuk mengonversi string secara otomatis ke datetime tanpa token format menggunakan 1 Python 5Fungsi _3 ini akan mengurai string secara otomatis. Anda tidak harus menyertakan string format apa pun. Mari kita coba parsing berbagai jenis string menggunakan 1 6Keluaran 7Anda dapat melihat bahwa hampir semua jenis string dapat diurai dengan mudah menggunakan modul 1Meskipun 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 8Keluaran _9Untuk mengonversi waktu ke zona waktu yang berbeda 0Keluaran _1Sekarang bukankah itu mudah digunakan? Keluaran _2Seperti 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 8 dan 9 jika waktunya tidak dalam UTCArrow adalah perpustakaan lain untuk menangani datetime dengan Python. Dan seperti sebelumnya dengan _6, itu juga mengetahui format datetime secara otomatis. Setelah ditafsirkan, ia mengembalikan objek _8 Python dari objek 2Untuk dengan mudah mengubah string menjadi datetime menggunakan 2 Python _3Keluaran _4Dan inilah cara Anda dapat menggunakan 2 untuk mengonversi zona waktu menggunakan metode 5 5Keluaran _6Seperti 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 _7Untuk mengurai dengan benar string tanggal-waktu yang dikomentari, Anda harus meneruskan token format yang sesuai untuk memberikan petunjuk perpustakaan tentang cara menguraikannya KesimpulanPada artikel ini kami telah menunjukkan berbagai cara untuk mengurai string ke objek 8 dengan Python. Anda dapat memilih perpustakaan Python _8 default atau salah satu perpustakaan pihak ketiga yang disebutkan dalam artikel ini, di antara banyak lainnyaMasalah utama dengan paket default _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 otomatisSatu 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 . |