10.8 通算日数⇒グレゴリオ暦/ユリウス暦変換 公開日:2021年9月10日 C++関数・テンプレート集プログラミング技術情報 前回同様、Wikipediaの計算式を元に修正ユリウス日から年月日の変換を行います。ユリウス日から修正ユリウス日を求めるには2400000.5を引くだけですので、今回は割愛することにしました。 それではまず、修正ユリウス […] 続きを読む
10.7 グレゴリオ暦/ユリウス暦⇒通算日数変換 公開日:2021年9月9日 C++関数・テンプレート集プログラミング技術情報 ユリウス通日に関して、元ネタでは紀元前1年の3月1日を0日目として計算するアルゴリズムが紹介されているようです。ところがWikipediaで調べてみると、実際には、ユリウス日はユリウス暦紀元前4713年1月1日の正午から […] 続きを読む
10.6 ライブラリ関数を使わずに指定日時(年月日曜時)が夏時間か判定する。 公開日:2021年9月7日 C++関数・テンプレート集プログラミング技術情報 これについても、C++になったからといってとくに変わりませんので、基本は元ネタと同じようにすればOKです。ただし、若干そのままではうまくいかないところがありますので、その部分だけはケアしてあげることにしましょう。また、せ […] 続きを読む
10.5 同じ月の別の日の曜日を求める。 公開日:2021年9月6日 C++関数・テンプレート集プログラミング技術情報 これはC++で書いても元ネタと変わらないのですが、せめてconstexprを付けた関数として実装することにしましょう。 [crayon-673ed359e995f083323103/] 今回はこれだけです。メタ関数を作っ […] 続きを読む
10.4 ○月D日(W曜)は、その月の何回目のW曜日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 今回は正直言って何に使うのかわかりませんが、元ネタの流れに沿って、メタ関数とconstexpr版それぞれを実装してみます。 まずはメタ関数版からです。次のメタ関数は、○月Day日(dow曜日)が、その月の何回目のdow曜 […] 続きを読む
10.3 ○月のN回目のW曜日は何日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、ある月のN回目のD曜日の日付を求めます。D1には、その月の1日の曜日を指定してください。 [crayon-673ed359e9b33550723345/] せっかくですのでconstexprを使った関数版 […] 続きを読む
10.2 日付が有効か否かの判定(グレゴリオ暦/ユリウス暦) 公開日:2021年9月4日 C++関数・テンプレート集プログラミング技術情報 指定した日付が有効かどうかを判定する関数テンプレートです。元ネタとは異なり、std::tm構造体のtm_monに合わせて、月は0~11で指定するようにしています。また、閏年用のテーブルも持たせることで、コードを単純化しま […] 続きを読む
10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 公開日:2021年9月2日 C++関数・テンプレート集プログラミング技術情報 元ネタでは、負の表現に1の補数を使う処理系に配慮した上で、負の年にも対応しようとしていますが、一応、高速判定が売りですので、ここでは無駄はバッサリ切り捨てて、1年~のみ対応としました。また、ユリウス暦とグレゴリオ暦を動的 […] 続きを読む