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

เขตเวลาและโลแคล

จัดการความแตกต่างของเขตเวลาและโลแคลอย่างถูกต้อง

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

เขตเวลาและภาษาท้องถิ่น

ช่วงเวลา Date เดียวกันจะแสดงผลแตกต่างกันไปทั่วโลก TimeZone และภาษาท้องถิ่นจะเป็นตัวกำหนดวิธีตีความและการแสดงผล

พื้นฐานของ TimeZone

TimeZone แทนค่าชดเชยจาก UTC รวมถึงกฎเวลาออมแสง ส่วน TimeZone.current คือเขตเวลาของอุปกรณ์

import Foundation

let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")

การสร้างเขตเวลาเฉพาะ

สร้างเขตเวลาที่มีชื่อด้วย TimeZone(identifier:) เช่น “America/New_York” หรือ “Europe/Istanbul”

import Foundation

if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
    print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}

ค่าชดเชยจาก GMT

secondsFromGMT(for:) ให้ค่าชดเชยปัจจุบัน ซึ่งอาจเปลี่ยนแปลงระหว่างปีเนื่องจากเวลาออมแสง

import Foundation

let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")

เขตเวลามีผลต่อปฏิทิน

กำหนดค่า timeZone ของปฏิทิน เพื่อให้การคำนวณวันและชั่วโมงใช้ภูมิภาคนั้นแทนค่าเริ่มต้นของอุปกรณ์

import Foundation

var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "UTC")!
let hour = cal.component(.hour, from: Date())
print("Hour in UTC between 0 and 23: \(0...23 ~= hour)")

เขตเวลาในการจัดรูปแบบ

Date.FormatStyle สามารถเก็บเขตเวลาเฉพาะไว้ได้ เพื่อให้ผลลัพธ์สะท้อนภูมิภาคนั้นโดยไม่ขึ้นกับการตั้งค่าของอุปกรณ์

import Foundation

let style = Date.FormatStyle(date: .omitted, time: .shortened)
    .timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)

พื้นฐานของภาษาท้องถิ่น

Locale เก็บภาษาและธรรมเนียมประจำภูมิภาค เช่น ชื่อเดือน วันแรกของสัปดาห์ และลำดับการแสดงตัวเลขกับวันที่

import Foundation

let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")

การสร้างภาษาท้องถิ่น

สร้างภาษาท้องถิ่นเฉพาะด้วย Locale(identifier:) เช่น “fr_FR” หรือ “tr_TR”

import Foundation

let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")

ภาษาท้องถิ่นเปลี่ยนผลลัพธ์

การนำภาษาท้องถิ่นไปใช้กับสไตล์การจัดรูปแบบจะเปลี่ยนชื่อเดือนและลำดับการแสดงผล วันที่เดียวกันจึงอ่านแตกต่างกันในแต่ละภาษา

import Foundation

let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
    .locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)

ภาษาท้องถิ่นและปฏิทินทำงานร่วมกัน

ภาษาท้องถิ่นยังมีผลต่อวันแรกของสัปดาห์และการนับหมายเลขสัปดาห์ของปฏิทินด้วย ควรใช้เขตเวลา ภาษาท้องถิ่น และปฏิทินร่วมกันเพื่อให้ได้ผลลัพธ์ที่ถูกต้องอย่างครบถ้วน

import Foundation

var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")

จัดเก็บเป็น UTC แสดงผลตามท้องถิ่น

แนวทางปฏิบัติที่ดีที่สุดคือจัดเก็บและส่งวันที่ในรูปแบบ UTC จากนั้นจึงแปลงเป็นเขตเวลาและภาษาท้องถิ่นของผู้ใช้เฉพาะตอนแสดงผล

import Foundation

let instant = Date()
let utcStyle = Date.FormatStyle(date: .numeric, time: .standard)
    .timeZone(TimeZone(identifier: "UTC")!)
print("UTC display ready: \(!instant.formatted(utcStyle).isEmpty)")

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

แนวทางที่แนะนำสำหรับจัดการวันที่ระหว่างภูมิภาคต่าง ๆ คืออะไร

ทบทวน

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. ชนิด Date และช่วงเวลา
  2. ปฏิทินและ DateComponents
  3. การจัดรูปแบบวันที่
  4. เขตเวลาและโลแคล
← กลับไปที่ Swift Academy