0Pricing
Ruby Academy · บทเรียน

เขตเวลา

จัดการเขตเวลา

เขตเวลา เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดเขตเวลาจึงสำคัญ

จุดเวลาเดียวกันอาจแสดงต่างกันไปตามสถานที่ การจัดการเขตเวลาไม่ถูกต้องทำให้เกิดข้อผิดพลาดที่คลาดเคลื่อนหลายชั่วโมง ดังนั้นคุณต้องระบุให้ชัดเจนว่าเวลานั้นใช้เขตเวลาใด

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

UTC: เขตเวลาอ้างอิง

UTC (เวลาสากลเชิงพิกัด) คือเขตเวลาอ้างอิงทั่วโลก ให้จัดเก็บและคำนวณใน UTC แล้วจึงแปลงเพื่อแสดงผล

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

เวลาท้องถิ่น

Time.now และ Time.local ใช้เขตเวลาท้องถิ่นของเครื่อง ออฟเซ็ตจาก UTC ระบุด้วย utc_offset ในหน่วยวินาที

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

การแปลงเป็น UTC

getutc (ชื่ออื่นคือ utc) คืนค่าจุดเวลาเดียวกันในรูป UTC นาฬิกาบนหน้าปัดจะเปลี่ยน แต่ช่วงเวลานั้นยังเป็นจุดเดิม

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

การแปลงเป็นออฟเซ็ตท้องถิ่น

getlocal รับสตริงออฟเซ็ตที่ระบุอย่างชัดเจน และคืนค่าจุดเวลาในเขตเวลานั้น

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

การระบุออฟเซ็ตเมื่อสร้าง

ส่งสตริงออฟเซ็ตเป็นอาร์กิวเมนต์สุดท้ายให้ Time.new เพื่อกำหนดเขตเวลาตั้งแต่ตอนสร้าง

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

จุดเวลาเดียวกัน นาฬิกาต่างกัน

เวลาสองค่าในเขตเวลาต่างกันอาจแทนจุดเวลาเดียวกันได้อย่างแม่นยำ การเปรียบเทียบใช้ช่วงเวลาพื้นฐาน ดังนั้นทั้งสองค่าจึงเท่ากัน

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)

ออฟเซ็ตใน ISO 8601

การประทับเวลาแบบ ISO 8601 จะฝังออฟเซ็ตไว้ด้วย (เช่น +03:00 หรือ Z สำหรับ UTC) ทำให้ไม่กำกวมเมื่อใช้งานระหว่างระบบ

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

การแยกวิเคราะห์สตริงที่มีเขตเวลา

Time.parse จะใช้ออฟเซ็ตที่มีอยู่ในสตริงข้อมูลนำเข้า

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

แนวทางปฏิบัติที่ดี: จัดเก็บเป็น UTC

รูปแบบที่ปลอดภัยที่สุดคือ จัดเก็บเป็น UTC คำนวณใน UTC และแปลงเป็นเขตเวลาของผู้ใช้เฉพาะตอนแสดงผล วิธีนี้จะหลีกเลี่ยงความกำกวมได้ทั้งหมด

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

ข้อควรระวังเกี่ยวกับ DST

ออฟเซ็ตคงที่อย่าง +03:00 จะไม่คำนึงถึงเวลาออมแสง หากต้องการใช้เขตเวลาที่มีชื่อพร้อมกฎ DST จำเป็นต้องใช้ไลบรารีอย่างแพ็กเกจ tzinfo เพราะคลาส Time หลักรู้จักเฉพาะออฟเซ็ตคงที่

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

ตรวจสอบความเข้าใจ

กลยุทธ์ที่แนะนำสำหรับจัดการเขตเวลาในแอปพลิเคชันคืออะไร

ทบทวน: เขตเวลา

คุณได้เรียนรู้วิธีจัดการเขตเวลาอย่างถูกต้อง:

  • UTC คือเขตเวลาอ้างอิงทั่วโลก
  • getutc และ getlocal แปลงเขตเวลาโดยไม่เปลี่ยนจุดเวลา
  • กำหนดออฟเซ็ตได้ตอนสร้างหรือในสตริง ISO 8601
  • จุดเวลาเดียวกันในเขตเวลาต่างกันจะเปรียบเทียบได้ว่าเท่ากัน
  • จัดเก็บเป็น UTC แสดงผลเป็นเวลาท้องถิ่น ออฟเซ็ตคงที่จะไม่คำนึงถึง DST
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)

คำถามที่พบบ่อย

บทเรียน “เขตเวลา” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เขตเวลา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เขตเวลา”

จัดการเขตเวลา คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “เขตเวลา” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คลาสเวลาและวันที่
  2. การแยกวิเคราะห์และการจัดรูปแบบ
  3. การคำนวณเวลา
  4. เขตเวลา
← กลับไปที่ Ruby Academy