読者です 読者をやめる 読者になる 読者になる

日と年のduration

C++

Predefined durations in std::chrono - std-prolosals


標準のChronoライブラリにはC++11現在、nanosecondsからhoursまでのdurationが用意されていますが、そのほかにdaysとyearsがほしい、というお話。


daysはusing days = duration>;で問題なく定義できます。
monthsは月によって30日だったり31日だったりするので、durationでできないのはわかってるから話にも出てきていません。
yearsはdaysのratio * 365で定義できそうな気はしますが、実際は1年は31,536,000秒(86400 * 365)ではなく、閏年の計算のためにグレゴリオ暦では平均で31,556,952秒となっています。


(使っている人がいるかは知らないですが)ユリウス暦だとまた値が異なるのと、日付計算をするならほしいのは1年後の秒数ではなく1年後の日や年だと思うので、このあたりはChronoの現在の枠組みの中ではできないからカレンダーライブラリ待ちだね、という話に落ち着こうとしています。