สำหรับการจัดการเกี่ยวกับ DateTime ในภาษา Dart ทางภาษาก็มี inbuilt utilities มาให้ใช้ค่อยข้างครบถ้วนเลยทีเดียว ซึ่งทำให้เราสามารถใช้งานและจัดการเกี่ยวกับ DateTime ได้มีประสิทธิภาพโดยเฉพาะเมื่อนำมาใช้ร่วมกับฟีเจอร์เหล่านี้ ได้แก่ ปฏิทิน(calendars), กำหนดการ(schedules) และการนัดหมาย(appointments) ในบทความนี้ จะมาแนะนำ 7 ฟังก์ชันที่ควรรู้ ซึ่งมีอะไรบ้าง ไปดูกันเล๊ยยยย
ก่อนอื่นมาดูตัวอย่างการสร้าง DateTime object กันก่อน
var now = DateTime.now();
var songKranDay = DateTime.utc(2019, 04, 13);
var happyDay = DateTime.parse("2018-02-14 20:18:04Z");
สามารถดึงข้อมูลรายละเอียดของ DateTime ได้ดังนี้
songKranDay.year; // => 2019
songKranDay.month; // => 4 (เดือนเมษายน) ค่าเริ่มต้นที่ 1 (เดือนมกราคม)
songKranDay.day; // => 13
songKranDay.weekday; // => 6 (วันเสาร์) ค่าเริ่มต้นที่ 1 (วันจันทร์)
1. add()
ฟังก์ชันสำหรับเพิ่ม วัน, เดือน, ปี, ชั่วโมง, นาที, วินาที, มิลลิวินาที หรือ ไมโครวินาที
var songKranDayAdd10 = songKranDay.add(Duration(days: 10, hours: 5)); // วันที่ 23 เดือนเมษายน เวลา 05:00
print(songKranDayAdd10.day); // => 23
print(songKranDayAdd10.hour); // => 5
2. difference()
ฟังก์ชันหาผลต่างระหว่าง DateTime ตั้งต้นกับ other
var diff = songKranDay.difference(happyDay);
diff.inDays; // => 422
diff.inHours; // => 10131
diff.inMinutes; // => 607901
3. isAfter(DateTime other)
ฟังก์ชันเช็คว่า DateTime ตั้งต้น มาหลัง other หรือไม่
happyDay.isAfter(songKranDay); // => false
4. isBefore(DateTime other)
ฟังก์ชันเช็คว่า DateTime ตั้งต้น มาก่อน other หรือไม่
happyDay.isBefore(songKranDay); // => true
5. compareTo(DateTime other)
ฟังก์ชันเช็คว่า DateTime ตั้งต้นกับ other เท่ากันหรือไม่
songKranDay.compareTo(songKranDay); // => 0 (equal)
happyDay.compareTo(songKranDay); // => -1 (not equal)
6. subtract(Duration duration)
ฟังก์ชันสำหรับลด วัน, เดือน, ปี, ชั่วโมง, นาที, วินาที, มิลลิวินาที หรือ ไมโครวินาที
songKranDay.subtract(
Duration(days: 7416, hours: 3, minutes: 41, seconds: 56)); // => 1969-07-20 20:18:04.000Z (about the day and time of the moon landing)
7. toLocal()
ฟังก์ชันสำหรับ return DateTime เป็นของ time zone นั้นๆ ซึ่งเป็นประโยชน์สำหรับ i18n.
happyDay.toLocal(); // => 2018-02-15 03:18:04.000
i18n ก็คือ แนวคิดที่จะทำให้สิ่งนั้นๆ มีความเป็นสากล
++เห็นว่าหน้าตาดีแถมให้อีกฟังก์ชันแล้วกัน :)
8. toUtc()
ฟังก์ชันสำหรับ return DateTime เป็นของ UTC time
happyDay.toUtc(); // => 2018-02-14 20:18:04.000Z
happyDay.timeZoneName; // => UTC
UTC (Coordinated Universal Time) หน่วยของเวลาในมาตรฐานของ GMT ที่ใช้ในการอ้างอิงการหมุนของโลก ใช้นาฬิกาอะตอม (Atomic clock) เป็นตัวกำหนดเวลา โดยการนับการสั่นของอะตอม
Reference:
(ข้อมูลอาจมีข้อผิดพลาด ถ้าจะเอาบทความนี้ไปอ้างอิงที่อื่นให้ตรวจสอบให้ดีก่อนนะครับ ขอบคุณครับ)
สำหรับวันนี้ ต้องขอลาไปก่อน สวัสดีครับ NottDev :)