Ruby Academy · Pelajaran

Zona Waktu

Menangani zona waktu.

Pelajaran 4 dari 413 langkah

Zona Waktu adalah pelajaran Ruby 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 Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.

Mengapa Zona Waktu Penting

Instan yang sama dapat terlihat berbeda bergantung pada lokasi. Kesalahan dalam menangani zona menyebabkan bug dengan selisih beberapa jam, jadi Anda harus menyatakan dengan jelas zona yang digunakan oleh suatu waktu.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.zone || t.utc_offset)
puts(t.utc_offset)

UTC: Zona Acuan

UTC (Waktu Universal Terkoordinasi) adalah acuan global. Simpan dan lakukan perhitungan dalam UTC, lalu konversikan untuk ditampilkan.

t = Time.utc(2026, 5, 30, 9, 0, 0)
puts(t.utc?)
puts(t.hour)

Waktu Lokal

Time.now dan Time.local menggunakan zona lokal mesin. Selisih dari UTC diberikan oleh utc_offset dalam satuan detik.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.utc_offset)
puts(t.utc_offset / 3600)

Mengonversi ke UTC

getutc (alias utc) mengembalikan instan yang sama dalam UTC. Waktu pada jam berubah, tetapi momennya identik.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.hour)
puts(t.getutc.hour)

Mengonversi ke Selisih Lokal

getlocal menerima teks selisih yang dinyatakan secara eksplisit dan mengembalikan instan dalam zona tersebut.

t = Time.utc(2026, 5, 30, 9, 0, 0)
istanbul = t.getlocal('+03:00')
puts(istanbul.hour)

Menentukan Selisih saat Pembuatan

Berikan teks selisih sebagai argumen terakhir kepada Time.new untuk menetapkan zona saat pembuatan.

ny = Time.new(2026, 5, 30, 8, 0, 0, '-04:00')
puts(ny.utc_offset / 3600)
puts(ny.getutc.hour)

Instan Sama, Jam Berbeda

Dua waktu di zona yang berbeda dapat mewakili instan yang benar-benar sama. Perbandingan menggunakan momen yang mendasarinya, sehingga keduanya sama.

a = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
b = Time.new(2026, 5, 30, 9, 0, 0, '+00:00')
puts(a == b)

Selisih dalam ISO 8601

Stempel waktu ISO 8601 menyertakan selisihnya, misalnya +03:00 atau Z untuk UTC, sehingga tidak ambigu di berbagai sistem.

require 'time'
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.iso8601)
puts(t.getutc.iso8601)

Mengurai Teks Berzona

Time.parse menghormati selisih yang terdapat dalam teks masukan.

require 'time'
t = Time.parse('2026-05-30T12:00:00+03:00')
puts(t.utc_offset / 3600)
puts(t.getutc.hour)

Praktik Terbaik: Simpan dalam UTC

Pola yang paling aman adalah: simpan dalam UTC, lakukan aritmetika dalam UTC, dan konversikan ke zona pengguna hanya saat menampilkan. Cara ini sepenuhnya menghindari ambiguitas.

stored = Time.utc(2026, 5, 30, 9, 0, 0)
display = stored.getlocal('+03:00')
puts("UTC #{stored.hour} -> Local #{display.hour}")

Perhatian terhadap DST

Selisih tetap seperti +03:00 mengabaikan waktu musim panas. Untuk zona bernama dengan aturan DST, diperlukan pustaka seperti paket tzinfo; kelas Waktu inti hanya mengetahui selisih tetap.

t = Time.new(2026, 7, 1, 12, 0, 0, '+02:00')
puts(t.utc_offset / 3600)

Pemeriksaan Singkat

Apa strategi yang disarankan untuk menangani zona waktu dalam aplikasi?

Ringkasan: Zona Waktu

Anda telah mempelajari cara menangani zona dengan benar:

  • UTC adalah acuan global
  • getutc dan getlocal mengonversi tanpa mengubah instan
  • Selisih ditetapkan saat pembuatan atau dalam teks ISO 8601
  • Instan yang sama di zona berbeda dianggap sama saat dibandingkan
  • Simpan dalam UTC, tampilkan dalam waktu lokal; selisih tetap mengabaikan DST
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)
Gratis untuk memulai

Belajar Ruby dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
29
Pelajaran
109

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Zona Waktu” gratis?

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

Apa yang akan aku pelajari di “Zona Waktu”?

Menangani zona waktu. Kamu berlatih Ruby 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 Ruby Academy?

Tidak diperlukan pengalaman sebelumnya. Ruby 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” 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 Ruby Academy ini?

Ya. Setiap pelajaran Ruby 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. Kelas Waktu dan Tanggal
  2. Parsing dan Pemformatan
  3. Aritmetika Waktu
  4. Zona Waktu
← Kembali ke Ruby Academy