Tôi rất nản lòng khi phải sử dụng các giá trị DateTime cho các tập dữ liệu thực sự "chỉ là một ngày". Sinh nhật là ví dụ phổ biến nhất, nhưng điều này xuất hiện trong các ứng dụng kinh doanh mọi lúc.
Tôi đã quen với việc chỉ đặt phần Thời gian của các bản ghi "chỉ ngày" thành "buổi trưa" (giúp tránh ngày thay đổi bất kể múi giờ). Điều này có vẻ như là một hack, và tôi mãi mãi tìm thấy lỗi từ các nhà phát triển cơ sở gặp phải vấn đề này.
Thời gian luôn luôn tương đối với một điểm cố định. 4 giờ chiều là 4 giờ đăng kinh tuyến, hoặc buổi trưa. Điểm cao nhất của mặt trời trong quá cảnh là có thể quan sát được và cho phép chúng ta thiết lập một hệ tọa độ. 3 giờ trước buổi trưa (Ante Meridian), 2 giờ sau buổi trưa, 1441899402938 mili giây kể từ ngày 1 tháng 1 năm 1970. Đối với những người được nuôi dưỡng trong một thế giới Cartesian, đây là bản chất thứ hai.
Nhưng Lịch của chúng tôi có trước Descartes. Lập luận của tôi là nó được suy nghĩ đúng đắn hơn như là một phép liệt kê mà chức năng modulo được áp dụng. Thứ Hai sau Chủ Nhật, và cứ thế cho đến khi bạn nhận ra thực tế là Chủ Nhật sau Thứ Bảy. Không có tích cực và tiêu cực, nó là một mô-đun, hoặc giá trị tuyệt đối.
Tương tự với nhiều năm lặp lại. Cứ sau 365 ngày, có một vài ngày đặc biệt đối với tôi: sinh nhật, ngày kỷ niệm, sinh nhật của trẻ em, v.v. Các ứng dụng lên lịch kinh doanh đầy rẫy với các ví dụ về các cuộc họp cứ sau bảy ngày, thứ ba đầu tiên của tháng, v.v ... Chỉ vì chúng ta CÓ THỂ ánh xạ số này lên một số dấu phẩy động và trong thực tế, ánh xạ nó vào số đã nói sẽ giải quyết RẤT NHIỀU vấn đề thực sự khó khăn theo cách cũ, nhưng điều đó không có nghĩa là cách duy nhất để làm điều đó.
Nhận thức và hiểu biết về bản chất "chốt vuông trong lỗ tròn" của việc sử dụng DateTimes để lưu trữ Ngày làm cho bạn trở thành một lập trình viên tốt hơn theo quan điểm của tôi.
Có giá trị nào trong một ứng dụng được dự định rõ ràng là một ứng dụng lập lịch trong việc xác định lớp Ngày hay là "đặt tất cả thời gian đến trưa" là cách tiếp cận tốt nhất? Có vấn đề gì với việc sử dụng DateTime và đặt thành phần Thời gian thành Buổi trưa? Sự dịch chuyển múi giờ có thể được tính theo cách tiếp cận như vậy không? Tôi đã sử dụng MomentJS, nhưng tôi nghĩ đó chỉ là một lớp Date tốt hơn.