การแปลงวันที่เป็นสตริง

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 ของคุณ

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

ดูเพิ่มเติม