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

ปฏิทินและ DateComponents

คำนวณเกี่ยวกับวันที่ข้ามปฏิทินต่าง ๆ

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

Calendar และ DateComponents

Calendar ใช้ตีความ Date ให้เป็นหน่วยที่มนุษย์เข้าใจ เช่น ปี เดือน และวัน ส่วน DateComponents ใช้เก็บค่าที่แยกออกมาเหล่านี้

ปฏิทินปัจจุบัน

Calendar.current สะท้อนการตั้งค่าของผู้ใช้ และเป็นตัวเชื่อมระหว่างช่วงเวลา Date ดิบกับช่องข้อมูลที่มีชื่อ

import Foundation

let cal = Calendar.current
print("Calendar identifier: \(cal.identifier)")

การดึงองค์ประกอบ

dateComponents(_:from:) ดึงช่องข้อมูลที่ร้องขอจากวันที่มาเก็บไว้ในค่า DateComponents

import Foundation

let cal = Calendar.current
let comps = cal.dateComponents([.year, .month, .day], from: Date())
print("Year is set: \(comps.year != nil)")

การอ่านช่องข้อมูลเดียว

ทางลัด component(_:from:) คืนค่าช่องข้อมูลหนึ่งช่องโดยตรงในรูปแบบ Int

import Foundation

let cal = Calendar.current
let weekday = cal.component(.weekday, from: Date())
print("Weekday number between 1 and 7: \(1...7 ~= weekday)")

การสร้างวันที่จากองค์ประกอบ

เติมค่าใน DateComponents แล้วขอให้ปฏิทินสร้าง Date ที่ตรงกันด้วย date(from:)

import Foundation

var comps = DateComponents()
comps.year = 2024
comps.month = 12
comps.day = 25
let cal = Calendar.current
if let date = cal.date(from: comps) {
    print("Built a date: \(date.timeIntervalSince1970 > 0)")
}

การคำนวณวันที่

date(byAdding:to:) เพิ่มจำนวนขององค์ประกอบอย่างปลอดภัย โดยจัดการจำนวนวันในแต่ละเดือนและปีอธิกสุรทินให้คุณ

import Foundation

let cal = Calendar.current
let now = Date()
if let nextWeek = cal.date(byAdding: .day, value: 7, to: now) {
    print(nextWeek > now)
}

การเพิ่มหลายหน่วย

คุณสามารถเพิ่มหลายหน่วยพร้อมกันได้โดยส่ง DateComponents ที่อธิบายค่าชดเชย

import Foundation

let cal = Calendar.current
var offset = DateComponents()
offset.month = 1
offset.day = 3
if let future = cal.date(byAdding: offset, to: Date()) {
    print(future > Date())
}

ความแตกต่างระหว่างวันที่

ทำย้อนกลับจากการดำเนินการก่อนหน้า: dateComponents(_:from:to:) คืนค่าหน่วยเวลาที่ผ่านไประหว่างวันที่สองวัน

import Foundation

let cal = Calendar.current
let now = Date()
let later = now.addingTimeInterval(3 * 86400)
let diff = cal.dateComponents([.day], from: now, to: later)
print("Days apart: \(diff.day ?? -1)")

จุดเริ่มต้นของวัน

startOfDay(for:) คืนค่าเที่ยงคืนของวันที่ในปฏิทิน ซึ่งเหมาะสำหรับจัดกลุ่มเหตุการณ์ตามวัน

import Foundation

let cal = Calendar.current
let midnight = cal.startOfDay(for: Date())
print(midnight <= Date())

การตรวจสอบว่าเป็นวันเดียวกัน

isDate(_:inSameDayAs:) บอกว่าวันที่สองวันอยู่ในวันตามปฏิทินเดียวกันหรือไม่

import Foundation

let cal = Calendar.current
let now = Date()
let soon = now.addingTimeInterval(60)
print(cal.isDate(now, inSameDayAs: soon))

เหตุผลที่ต้องใช้ Calendar

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

import Foundation

let cal = Calendar.current
// Correct: add 1 month, not 30 * 86400 seconds.
if let d = cal.date(byAdding: .month, value: 1, to: Date()) {
    print("Added a month correctly: \(d > Date())")
}

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

เมธอดใดใช้เพิ่มหนึ่งเดือนให้วันที่ได้อย่างถูกต้อง

ทบทวน

Calendar แปลงระหว่าง Date กับช่องข้อมูลที่มีชื่อผ่านทาง DateComponents คุณได้ดึงช่องข้อมูล สร้างวันที่ เพิ่มหน่วยด้วย date(byAdding:) คำนวณความแตกต่าง และเห็นแล้วว่าเหตุใดการคำนวณตามปฏิทินจึงดีกว่าการคำนวณด้วยจำนวนวินาทีดิบ บทเรียนถัดไปจะแนะนำการจัดรูปแบบวันที่เพื่อแสดงผล

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

บทเรียน “ปฏิทินและ DateComponents” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ปฏิทินและ DateComponents”

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

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

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

บทเรียน “ปฏิทินและ DateComponents” ใช้เวลานานแค่ไหน

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

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

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

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

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