TypeScript:
การคำนวณวันที่ในอนาคตหรืออดีต
วิธีการ:
// รับวันที่ปัจจุบัน
const today: Date = new Date();
// คำนวณ 10 วันในอนาคต
const tenDaysLater: Date = new Date(today.getTime() + (10 * 24 * 60 * 60 * 1000));
console.log(`สิบวันจากนี้: ${tenDaysLater.toDateString()}`);
// คำนวณ 10 วันในอดีต
const tenDaysBefore: Date = new Date(today.getTime() - (10 * 24 * 60 * 60 * 1000));
console.log(`สิบวันก่อนหน้านี้เป็นวันที่: ${tenDaysBefore.toDateString()}`);
ตัวอย่างผลลัพธ์:
สิบวันจากนี้: Sun Apr 23 2023
สิบวันก่อนหน้านี้เป็นวันที่: Wed Apr 03 2023
ลึกซึ้ง
ในอดีต, การจัดการวันที่ใน JavaScript—และยืดอกไปถึง TypeScript—ได้เป็นเรื่องที่ท้าทายเนื่องจากความแปลกประหลาดของวัตถุ Date และเขตเวลา ไลบรารีทางเลือกเช่น Moment.js และ date-fns ได้เสนอการแยกประเภทเพื่อจัดการกับความซับซ้อนนี้ ด้วย ES6, การสนับสนุนสำหรับการทำให้เป็นสากลได้รับการปรับปรุงผ่าน API Intl
, ซึ่ง TypeScript ยังสามารถใช้งานได้
เมื่อคำนวณวันที่, ให้ระวังการเปลี่ยนแปลงเวลาออมแสงและวินาทีอัพเกรด เหล่านี้สามารถทำให้การคำนวณตรงไปตรงมาเช่นการเพิ่ม 24 ชั่วโมงให้กับวันที่หลุดลอยไป นอกจากนี้, ให้พิจารณาเสมอถึงท้องถิ่นและเขตเวลาของผู้ใช้เมื่อแสดงวันที่ที่คำนวณ
สำหรับความเข้ากันได้กว้าง ๆ และความยืดหยุ่น, คุณอาจเลือกใช้ไลบรารีเช่น date-fns
หรือ Luxon
, ซึ่งเป็นโมดูลาร์และสามารถกลายเป็นตัวเลือกที่ยอดเยี่ยมสำหรับงานที่ซับซ้อน ตัวอย่างเช่น, กับ date-fns
, คุณสามารถเพิ่มวันได้อย่างง่ายดาย:
import { addDays } from 'date-fns';
const result = addDays(new Date(2023, 3, 13), 10); // 13 เมษายน 2023 + 10 วัน
console.log(result.toDateString());
พวกเขายังจัดการกับกรณีขอบและปัญหาเขตเวลา, ทำให้การคำนวณวันที่หลุดจากความยากลำบากได้อย่างมาก