ฉันผิดหวังอย่างมากที่ต้องใช้ค่า DateTime สำหรับชุดข้อมูลที่ "แค่วันเดียว" อย่างแท้จริง วันเกิดเป็นตัวอย่างที่พบบ่อยที่สุด แต่สิ่งนี้เกิดขึ้นในแอปพลิเคชันทางธุรกิจตลอดเวลา
ฉันคุ้นเคยกับการตั้งค่าส่วนเวลาของระเบียน "วันที่เท่านั้น" เป็น "เที่ยง" (ซึ่งจะหลีกเลี่ยงวันที่ที่เปลี่ยนแปลงตลอดเวลาไม่ว่าจะเป็นเขตเวลา) ดูเหมือนว่าแฮ็คและฉันจะหาบั๊กจากผู้พัฒนาอุปกรณ์ตัวจริงตลอดไปในเรื่องนี้
เวลาสัมพันธ์กับจุดคงที่เสมอ 4PM คือ 4 ชั่วโมงหลังเที่ยงหรือเที่ยง จุดที่สูงที่สุดของดวงอาทิตย์ในการเดินทางผ่านนั้นสามารถสังเกตได้และช่วยให้เราสามารถตั้งค่าระบบพิกัดได้ 3 ชั่วโมงก่อนเที่ยง (Ante Meridian) 2 ชั่วโมงหลังเที่ยง 1441899402938 มิลลิวินาทีนับตั้งแต่ 1 มกราคม 2513 สำหรับผู้ที่เลี้ยงในโลกคาร์ทีเซียนนี่เป็นลักษณะที่สอง
แต่ปฏิทินของเราถือกำเนิด Descartes ข้อโต้แย้งของฉันคือมันเป็นความคิดที่ถูกต้องมากขึ้นว่าเป็นการนับที่ฟังก์ชันโมดูโลถูกนำไปใช้ วันจันทร์ตามวันอาทิตย์และต่อ ๆ ไปจนกว่าคุณจะได้รับความจริงที่ว่าวันอาทิตย์เป็นวันเสาร์ ไม่มีบวกและลบมันเป็นโมดูลัสหรือค่าสัมบูรณ์
ในทำนองเดียวกันกับปีซ้ำ ทุก ๆ 365 วัน (หรือมากกว่านั้น) มีวันพิเศษหลายอย่างสำหรับฉัน: วันเกิดวันครบรอบวันเกิดของเด็ก ฯลฯ ฯลฯ แอปพลิเคชันการตั้งเวลาทางธุรกิจนั้นเต็มไปด้วยตัวอย่างของการประชุมทุกเจ็ดวันอังคารแรกของเดือน ฯลฯ เพียงเพราะ เราสามารถแมปสิ่งนี้กับเลขทศนิยมและในความจริงแล้วการจับคู่กับตัวเลขนั้นแก้ปัญหามากมายที่ยากแบบเก่า ๆ แต่นั่นไม่ได้หมายความว่ามันเป็นวิธีเดียวที่จะทำได้
การรับรู้และความเข้าใจธรรมชาติของ "สี่เหลี่ยมหมุดในรูกลม" ของการใช้ DateTimes เพื่อจัดเก็บวันที่ทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นในความคิดของฉัน
มีค่าในแอปพลิเคชันที่ตั้งใจไว้อย่างชัดเจนว่าเป็นแอปพลิเคชั่นการกำหนดตารางเวลาในการกำหนดคลาส Date หรือ "ถูกตั้งค่าทุกครั้งเป็นเที่ยง" เป็นวิธีการที่ดีที่สุดหรือไม่? อาจมีปัญหาอะไรบ้างในการใช้ DateTime และตั้งค่าคอมโพเนนต์ Time เป็น Noon สามารถเปลี่ยนเขตเวลาได้หรือไม่ในแนวทางดังกล่าว ฉันใช้ MomentJS แต่ฉันคิดว่านั่นเป็นเพียงชั้นเรียนที่ดีกว่า