0Pricing
Python Academy · Pelajaran

Zona Waktu dengan zoneinfo

Gunakan datetime yang memiliki informasi zona waktu

Zona Waktu dengan zoneinfo adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Tanggal-waktu naif vs berzona

Tanggal-waktu naif tidak memiliki informasi zona waktu—tanggal-waktu ini hanya menyatakan '2 PM' tanpa petunjuk 2 PM yang mana. Tanggal-waktu berzona membawa informasi zona waktu, sehingga menentukan satu saat yang tepat di seluruh dunia.

Tanggal-waktu berzona mencegah kesalahan saat pengguna berada di berbagai wilayah.

from datetime import datetime
naive = datetime(2026, 5, 30, 14, 0)
print(naive.tzinfo)

Mengimpor informasi zona waktu

Python 3.9+ menyertakan zoneinfo dalam pustaka standar. Impor ZoneInfo dan teruskan nama zona waktu IANA seperti 'Europe/Istanbul' atau 'America/New_York'.

from zoneinfo import ZoneInfo
tz = ZoneInfo('Europe/Istanbul')
print(tz)

Membuat tanggal-waktu berzona

Teruskan tzinfo=ZoneInfo(...) saat membuat tanggal-waktu agar tanggal-waktu tersebut berzona. Kini tanggal-waktu tersebut mengetahui wilayah yang tepat untuknya.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d)
print(d.tzinfo)

UTC sebagai patokan

UTC adalah acuan universal. Gunakan datetime.now(ZoneInfo('UTC')) untuk mendapatkan waktu UTC berzona saat ini. Menyimpan waktu dalam UTC merupakan praktik terbaik.

from datetime import datetime
from zoneinfo import ZoneInfo
utc_now = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
print(utc_now)

Mengonversi antar zona

.astimezone(tz) mengonversi tanggal-waktu berzona ke zona waktu lain dengan menyesuaikan jamnya agar tetap menunjukkan saat yang sama.

from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ist = utc.astimezone(ZoneInfo('Europe/Istanbul'))
print('UTC:', utc)
print('Istanbul:', ist)

Saat yang sama, jam berbeda

Setelah dikonversi, angka pada jam lokal akan berbeda, tetapi saat yang mendasarinya tetap sama. Membandingkan dua tanggal-waktu berzona berarti membandingkan saat yang sebenarnya, bukan angka yang ditampilkan.

from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ny = utc.astimezone(ZoneInfo('America/New_York'))
print(utc == ny)

Membaca perbedaan UTC

Metode .utcoffset() mengembalikan timedelta yang menunjukkan seberapa jauh zona tersebut dari UTC pada saat itu, termasuk penyesuaian waktu musim panas.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print('Offset:', d.utcoffset())

Penyesuaian waktu musim panas ditangani otomatis

zoneinfo menggunakan basis data zona waktu sistem, sehingga mengetahui kapan penyesuaian waktu musim panas dimulai dan berakhir. Zona yang sama dapat memiliki perbedaan UTC yang berbeda sepanjang tahun.

from datetime import datetime
from zoneinfo import ZoneInfo
winter = datetime(2026, 1, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
summer = datetime(2026, 7, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
print('Winter:', winter.utcoffset())
print('Summer:', summer.utcoffset())

Menambahkan zona ke waktu naif

Jika tanggal-waktu naif mewakili waktu lokal yang diketahui, tambahkan zona dengan .replace(tzinfo=...). Cara ini memberi label zona tanpa menggeser jam.

from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = naive.replace(tzinfo=ZoneInfo('Europe/Istanbul'))
print(aware)

Hindari mencampur waktu naif dan berzona

Anda tidak dapat mengurangkan atau membandingkan tanggal-waktu naif dengan tanggal-waktu berzona—Python akan memunculkan TypeError. Jagalah agar tanggal-waktu Anda konsisten di seluruh program.

from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = datetime(2026, 5, 30, 9, 0, tzinfo=ZoneInfo('UTC'))
try:
    print(aware - naive)
except TypeError as e:
    print('Error:', e)

Memformat dengan zona

Kode %Z mencetak nama zona waktu, sedangkan %z mencetak perbedaan numerik saat Anda memformat tanggal-waktu berzona.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d.strftime('%Y-%m-%d %H:%M %Z %z'))

Pemeriksaan Cepat

Apa perbedaan utama antara tanggal-waktu naif dan tanggal-waktu berzona?

Ringkasan: Zona Waktu dengan informasi zona waktu

Ringkasan:

  • Tanggal-waktu naif tidak memiliki informasi zona waktu, sedangkan tanggal-waktu berzona membawa tzinfo.
  • Gunakan ZoneInfo('Region/City') dari modul zoneinfo.
  • .astimezone() mengonversi tanggal-waktu berzona ke zona lain.
  • zoneinfo menangani penyesuaian waktu musim panas secara otomatis, dan Anda tidak boleh mencampur tanggal-waktu naif dengan tanggal-waktu berzona.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 12, 0, tzinfo=ZoneInfo('UTC'))
print(utc.astimezone(ZoneInfo('Europe/Istanbul')))

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Zona Waktu dengan zoneinfo” gratis?

Ya — teks lengkap “Zona Waktu dengan zoneinfo” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Zona Waktu dengan zoneinfo”?

Gunakan datetime yang memiliki informasi zona waktu Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Zona Waktu dengan zoneinfo” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. date, time, datetime
  2. Timedelta dan Aritmetika
  3. Pemformatan dan Penguraian
  4. Zona Waktu dengan zoneinfo
← Kembali ke Python Academy