ปฏิทินและ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิด Date และช่วงเวลา
- ปฏิทินและ DateComponents
- การจัดรูปแบบวันที่
- เขตเวลาและโลแคล