プログラミングで「午後10時に3時間を足すと1日と2時間」になる問題がついに解決へ!
https://hayabusa9.5ch.net/test/read.cgi/news/1622268209 />

https://www.infoq.com/jp/news/2021/05/Net6-Date-Time/ /> .NETの基本クラスライブラリの長年の問題は、日付と時刻の値を別々に表すことができない
ことである。.NET 6の一部として、新しいDateOnlyクラスとTimeOnlyクラスは、この過失を
修正しようとするものである。
90年代以降、Windowsプログラマは、日付と時刻の値に関する最適とは言えない言い分に
対処してきた。Visual Basicには、日付、時刻、日付と時刻、期間の値に使われる
Dateクラスのみがあった。これにより、日付コンポーネントしか保持するつもりがなかった値に対して、
時間コンポーネントも取得しようとする場合によく問題が発生した。その逆も同じである。
.NET 1(VB 7)では、Date構造の名前がDateTimeに変更された。
より適切な名前であるが、日付のみの値と日付+時刻の値の両方を表す必要があるという
同じ問題があった。これは、タイムゾーン変換を実行するときに特に問題であった。
DateTime構造に格納されている日付のみの値は、午前1時あるいは午後11時の
時間コンポーネントを簡単に取得できる。後者の場合、1時間のオフセットにより、
日付コンポーネントが前日に変更される。
また、.NET 1には、TimeSpan構造の導入があった。これは期間を保存するように設計された。
しかし、多くの場合、その場しのぎの時間のみの構造として活用されていた。
繰り返すが、この手法には問題があった。
たとえば、午後10時に3時間を追加すると、予想される午前1時ではなく「1日と2時間」になる。
多くの場合、これは、値がデータベースの時間のみの列に挿入されるまで気付かれず、
その結果、オーバーフローエラーが発生する。
以下ソース

はい

last-modified: 2021-05-30 19:22:32