Zona waktu mewakili waktu standar tergantung pada bagian dunia mana yang sedang dipertimbangkan
Secara sederhana, zona waktu mengacu pada waktu lokal suatu wilayah. UTC (Coordinated Universal Time) adalah waktu astronomi berdasarkan rotasi bumi, adalah standar untuk mengkoordinasikan waktu berbasis wilayah dunia
Catatan. UTC – Waktu Universal Terkoordinasi adalah standar waktu umum di seluruh dunia. Jadi, dengan Python, untuk bekerja dengan zona waktu tanpa masalah, disarankan untuk menggunakan UTC sebagai zona waktu dasar Anda
Misalnya, CT (Waktu Tengah) di Amerika Utara dan Selatan terlambat 5 atau 6 jam dan direpresentasikan sebagai UTC-5 atau UTC-6 berdasarkan Day Light Saving. Di bawah ini adalah beberapa contoh
UTC OffsetLocationsNameLocationUTC +9Jepang, Korea Selatan, dan 5 lainnyaJSTTokyoOUTC +5. 30 IndiaISTIndia UTC +1 Britania Raya dan 20 lainnyaBSTLondonUTC -10Hawaii/USA dan 2 lagiHSTHonoluluTimeZonesPython menyediakan kelas dasar abstrak Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_7 yang menyediakan metode untuk menangani zona waktu. Tapi kelas ini adalah kelas dasar abstrak dan tidak boleh dipakai secara langsung. Kita perlu mendefinisikan subclass dari tzinfo untuk menangkap informasi tentang zona waktu tertentu
Pustaka pytz telah mengimplementasikan kelas zona waktu untuk menangani offset tetap arbitrer dari UTC dan zona waktu. Pustaka ini memungkinkan perhitungan zona waktu lintas platform yang akurat dan juga menyelesaikan masalah waktu ambigu di akhir waktu musim panas
pytz adalah implementasi konkret dari kelas dasar abstrak tzinfo dan digunakan untuk membuat objek datetime yang sadar zona waktu
Misalnya, fungsi Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_8 mengembalikan tanggal waktu lokal saat ini tanpa informasi zona waktu apa pun. Dengan menggunakan pustaka pytz, kita dapat meneruskan nama zona waktu ke fungsi ini untuk mendapatkan waktu saat ini di zona waktu yang diberikan
Kami akan menggunakan atribut dan metode modul pytz berikut untuk bekerja dengan zona waktu di Python
- Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_9. Dapatkan zona waktu UTC standar - from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)0. Buat objek zona waktu dari wilayah tertentu
- from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)1. Ubah waktu zona waktu tertentu menjadi zona waktu lain
Buat Objek Datetime Sadar Zona Waktu
Dengan Python, objek tanggal dapat disebutkan dengan atau tanpa zona waktu. Berdasarkan itu, suatu objek dikenal sebagai Naif atau Sadar. Objek tanggal, secara default, naif. Objek datetime atau time sadar jika memiliki nilai zona waktu (tz).
Ikuti langkah-langkah di bawah ini untuk membuat Objek Datetime sadar zona waktu dengan Python. –
- Instal modul pytz jika tidak diinstal menggunakan perintah from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)2
- Gunakan fungsi from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_3 untuk membuat objek zona waktu
- Gunakan fungsi from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_4 atau from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)5 untuk membuat zona waktu mengetahui waktu saat ini
Contoh
from datetime import datetime import pytz # current Datetime unaware = datetime.now() print('Timezone naive:', unaware) # Standard UTC timezone aware Datetime aware = datetime.now(pytz.utc) print('Timezone Aware:', aware) # US/Central timezone datetime aware_us_central = datetime.now(pytz.timezone('US/Central')) print('US Central DateTime', aware_us_central)_Keluaran
Timezone naive: 2021-07-09 13:22:02.256978Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
- Untuk mendapatkan waktu UTC kami menggunakan Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_9 sebagai parameter untuk fungsi Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:008. Offset pada akhirnya adalah +00. 00 yang merupakan offset UTC standar - Untuk mendapatkan tanggal waktu CDT, kami menggunakan wilayah 'AS/Tengah' untuk membuat zona waktu. Offset pada akhirnya adalah -05. 00 adalah offset UTC untuk wilayah CDT
Lihat daftar semua zona waktu di Python jika Anda tidak tahu nama persis zona waktu untuk membuat tanggal dan waktu di zona waktu yang tepat
Untuk membuat zona waktu yang lama/ada, gunakan kode berikut
from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)Catatan. Metode from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_8 mengembalikan instance from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)9 yang baru
Format UTC DateTime untuk mendapatkan nama zona waktu
Ekstrak nama zona waktu dari UTC DateTime menggunakan format DateTime dengan Python. Gunakan arahan from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +0530_0 untuk mendapatkan nama zona waktu
from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +0530Catatan. IST adalah nama zona waktu
Membuat Objek TimeZone Aware Datetime Menggunakan kelas zona waktu
Mari kita lihat bagaimana membuat objek from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)9 sadar zona waktu tanpa pytz
Modul datetime memiliki kelas from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +0530_2, yang merupakan subkelas dari kelas dasar abstrak from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +05303. Setiap instance yang dibuat dari kelas zona waktu merepresentasikan offset zona waktu dari Waktu Universal Terkoordinasi (UTC)
Kita dapat membuat objek from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_9 yang sadar-UTC dengan menugaskan from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +05305
Sintaksis
Di sini from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +0530_6 menunjukkan perbedaan antara waktu setempat dan UTC (Waktu Universal Terkoordinasi). Ini bisa menjadi objek delta waktu mulai dari jam = -24 hingga +24
Contoh
from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime)Catatan. kami menyetel offset UTC menggunakan kelas timedelta from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +05307
Dapatkan Waktu Sekarang di Zona Waktu Berbeda
Dengan menggunakan modul pytz kita bisa mendapatkan tanggal dan waktu saat ini dari zona waktu mana pun
Sintaksis
datetime.now(pytz.timezone('timezone name'))Langkah
- Gunakan fungsi from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_3 untuk membuat objek zona waktu
- Gunakan fungsi from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)_4 untuk mendapatkan tanggal waktu saat ini dari zona waktu yang diberikan
Catatan. UTC – Waktu Universal Terkoordinasi adalah standar waktu umum di seluruh dunia. Jadi, untuk bekerja dengan zona waktu tanpa masalah, disarankan untuk menggunakan UTC sebagai zona waktu dasar Anda
Dalam contoh ini, kita akan melihat cara mendapatkan tanggal waktu saat ini di zona waktu berikut
Amerika Serikat. Dapatkan Tanggal dan Waktu saat ini di Zona Waktu Amerika Serikat berikut
from datetime import datetime import pytz dt_us_central = datetime.now(pytz.timezone('America/Mexico_City')) print("US Central DateTime:", dt_us_central.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_us_pacific = datetime.now(pytz.timezone('America/Tijuana')) print("US Pacific timezone DateTime:", dt_us_pacific.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_us_eastern = datetime.now(pytz.timezone('America/New_York')) print("US Eastern timezone DateTime:", dt_us_eastern.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_us_mountain = datetime.now(pytz.timezone('America/Chihuahua')) print("US Mountain timezone DateTime:", dt_us_mountain.strftime("%Y:%m:%d %H:%M:%S %Z %z"))Keluaran
US Central DateTime: 2021:07:08 08:37:34 CDT -0500 US Pacific timezone DateTime: 2021:07:08 06:37:34 PDT -0700 US Eastern timezone DateTime: 2021:07:08 09:37:34 EDT -0400 US Mountain timezone DateTime: 2021:07:08 07:37:34 MDT -0600Zona Waktu lainnya
from datetime import datetime import pytz dt_japan = datetime.now(pytz.timezone('Asia/Tokyo')) print("Japan DateTime:", dt_japan.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_brazil = datetime.now(pytz.timezone('America/Sao_Paulo')) print("Brazil DateTime:", dt_brazil.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_uk = datetime.now(pytz.timezone('Europe/London')) print("Uk DateTime:", dt_uk.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_germany = datetime.now(pytz.timezone('Europe/Berlin')) print("Germany DateTime:", dt_germany.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_aus = datetime.now(pytz.timezone('Australia/Canberra')) print("Australia Oceanic DateTime:", dt_aus.strftime("%Y:%m:%d %H:%M:%S %Z %z")) dt_africa = datetime.now(pytz.timezone('Africa/Maputo')) print("Central Africa: DateTime:", dt_africa.strftime("%Y:%m:%d %H:%M:%S %Z %z"))Keluaran
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:000
Juga, lihat. Konversi antar zona waktu
Dapatkan Informasi TimeZone Menggunakan tzinfo
Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:007 adalah kelas dasar abstrak yang berisi informasi tentang objek tanggal atau waktu yang diteruskan kepada mereka
Tzinfo umumnya berisi informasi berikut. –
- Nama zona waktu dari Datetime
- Offset dari UTC (Waktu Universal Terkoordinasi)
- DST (Penghematan siang hari)
Kelas tzinfo menyediakan metode berikut untuk mendapatkan informasi zona waktu. –
- datetime.timezone(offset, name=None)_1. Mengembalikan nama zona waktu yang sesuai dengan objek from datetime import datetime import pytz unaware = datetime(2021, 6, 15, 8, 45, 17, 5) print('Timezone naive:', unaware) # Convert unaware Datetime to UTC timezone aware Datetime aware = unaware.replace(tzinfo=pytz.UTC) print(aware)9 datetime.timezone(offset, name=None)3. Metode ini mengembalikan nama yang digunakan saat membuat objek zona waktu
- datetime.timezone(offset, name=None)_4. Metode ini mengembalikan total offset dari UTC yang seharusnya menjadi objek timedelta. Nilai timedelta positif jika di sebelah timur UTC dan negatif di sebelah barat UTC. Offset total mencakup nilai zona waktu dan DST (Day light saving). Oleh karena itu, rentang timedelta adalah antara -timedelta(hours=24) hingga timedelta(hours=24)
- datetime.timezone(offset, name=None)_5. Metode ini mengembalikan offset dst di zona tempat dst berlaku. Dalam kasus lain hanya akan mengembalikan datetime.timezone(offset, name=None)6. Informasi dst sudah menjadi bagian dari utcoffset oleh karena itu tdatetime.timezone(offset, name=None)7 harus mengembalikan standar offset zona waktu terlepas dari tanggal dan waktu tetapi hanya pada lokasi geografis
Contoh
Timezone naive: 2021-07-09 13:22:02.256978Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_1
Kode kami menghasilkan informasi berikut
Timezone naive: 2021-07-09 13:22:02.256978Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_2
Modul datetime memiliki kelas from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +0530_2, yang merupakan subkelas dari kelas dasar abstrak from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +05303
Konversi Antar Zona Waktu
Gunakan metode from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime) _0 untuk mengonversi datetime dari satu zona waktu ke zona waktu lainnya. Metode ini menggunakan turunan dari objek datetime dan mengembalikan datetime baru dari zona waktu tertentu
Timezone naive: 2021-07-09 13:22:02.256978Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_3
Keluaran
Timezone naive: 2021-07-09 13:22:02.256978Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00_4
Bekerja dengan Zona Waktu Lokal
Catatan. Untuk bekerja dengan zona waktu tanpa masalah, disarankan untuk menggunakan UTC sebagai zona waktu dasar Anda, bukan waktu setempat
Seperti yang telah disebutkan, kita dapat mengonversi datetime yang naif menjadi instance datetime yang sadar dengan nilai zona waktu yang disetel ke nilai standar lokal
Kita dapat melakukannya dengan salah satu metode from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime) 1 yang disebut from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime) 2(). Metode ini digunakan untuk mengubah naif ke waktu lokal. Itu menerima dua argumen, yaitu objek datetime untuk dilokalkan dan flag from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime) 3 opsional
Bendera ini disetel ke true jika kita ingin melokalkan dan informasi penghematan siang hari dan false jika kita hanya menginginkan waktu offset standar dan false sebaliknya
Seperti disebutkan di atas from datetime import datetime import pytz datetime_india = datetime.now(pytz.timezone('Asia/Kolkata')) print("Formatted DateTime in IST : ", datetime_india.strftime('%Y:%m:%d %H:%M:%S %Z %z')) # Output 2021:07:08 17:53:23 IST +05303 memiliki metode yang disebut from datetime import datetime, timezone, timedelta # naive naive = datetime.now() print("Naive DateTime:", naive) # UTC aware UTC = datetime.now(timezone.utc) print("UTC DateTime", UTC) # Creating a datetime with JST (Japan) TimeZone jst_dateTime = datetime.now(timezone(timedelta(hours=+9), 'JST')) print("In JST::", jst_dateTime) 5 yang akan mengembalikan informasi Daylight Saving Time(DST) jika bendera disetel ke true