Zona Waktu
Menangani zona waktu.
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
getutcdangetlocalmengonversi 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)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.