Swift:
การแปลงวันที่เป็นสตริง
วิธีการ:
Swift ใช้ DateFormatter
เพื่อแปลงออบเจค Date
เป็นสตริงที่อ่านได้ นี่คือวิธีการ:
import Foundation
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateString = formatter.string(from: date)
print(dateString) // ผลลัพธ์: "2023-04-05 14:20:35" (หรือวันและเวลาปัจจุบัน)
เปลี่ยน dateFormat
เพื่อปรับแต่งว่าวันที่ของคุณจะดูเป็นอย่างไร:
formatter.dateFormat = "EEEE, MMM d, yyyy"
print(formatter.string(from: date)) // ผลลัพธ์: "วันพุธ, เม.ย. 5, 2023"
การทำความเข้าใจลึกซึ้ง
ก่อน DateFormatter
, Objective-C และ Swift รุ่นแรกใช้ NSDateFormatter
, ซึ่งพื้นฐานแล้วเป็นสิ่งเดียวกันที่ได้รับการเปลี่ยนแปลงชื่อ สิ่งสำคัญคือการรู้จัก ISO 8601, มาตรฐานรูปแบบวันที่ที่ทั่วไป นักพัฒนาจะต้องหาสมดุลระหว่างรูปแบบที่เฉพาะเจาะจงกับการตั้งค่า local ของผู้ใช้ ทำไม? เพราะวันที่มีการอ่านที่แตกต่างกันทั่วโลก เช่น ชาวอเมริกันใช้ “MM/dd/yyyy” ในขณะที่หลายประเทศในยุโรปใช้ “dd/MM/yyyy”
มีทางเลือกอื่นหรือไม่? แน่นอน Swift มี ISO8601DateFormatter
สำหรับวันที่ ISO 8601 และ DateComponentsFormatter
สำหรับสตริงระยะเวลา เช่น “42 นาที” คุณยังสามารถสร้างสตริงแบบกำหนดเองด้วย .formatted()
ใน Swift เวอร์ชัน 5.5 ขึ้นไป:
let formattedDate = date.formatted(.dateTime.year().month().day().hour().minute().second())
print(formattedDate) // ผลลัพธ์จะขึ้นอยู่กับการตั้งค่า local ของคุณ
ระวัง: การสร้างสตริงแบบกำหนดเองอาจนำไปสู่ปัญหาในการทำให้เป็นท้องถิ่นและโค้ดที่เสี่ยงต่อข้อผิดพลาด ให้ยึดติดกับการใช้ฟอร์แมตเตอร์และมาตรฐานเมื่อเป็นไปได้
ดูเพิ่มเติม
- การจัดรูปแบบวันที่ - เอกสารของ Apple เกี่ยวกับ DateFormatter