PHPのCAL_FROM_JD()関数は、PHPの組み込みカレンダー変換関数の1つです。ジュリアンデイ(JD)を指定されたカレンダー形式に変換できます。この関数の構文は次のとおりです。
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">cal_from_jd</span></span><span> ( </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$jd</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$calendar</span></span><span> )
</span></span>$ JD :変換する必要があるジュリアン日。これは、紀元前4713年1月1日の正午からの日数を表すフローティング番号です。
$カレンダー:変換されたカレンダータイプを指定します。 PHPは、次のようなさまざまなカレンダーシステムをサポートしています。
cal_gregorian (グレゴリアン)
Cal_julian (ジュリアンカレンダー)
cal_faji (イスラムカレンダー)
cal_hebrew (ヘブライ語)
この関数は、年、月、日付などの変換された日付要素を含む連想配列を返します。
cal_from_jd()関数を使用する方法をよりよく理解するには、特定の例を見てみましょう。 2459373.5のジュリアン日付(2022年7月16日にJD)があり、グレゴリオの日付に変換したいとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$jd</span></span><span> = </span><span><span class="hljs-number">2459373.5</span></span><span>; </span><span><span class="hljs-comment">// ジュリアスの日</span></span><span>
</span><span><span class="hljs-variable">$calendar</span></span><span> = CAL_GREGORIAN; </span><span><span class="hljs-comment">// グレゴリオカレンダー</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">cal_from_jd</span></span><span>(</span><span><span class="hljs-variable">$jd</span></span><span>, </span><span><span class="hljs-variable">$calendar</span></span><span>);
</span><span><span class="hljs-comment">// 出力結果</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"年: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'year'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"月: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'month'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"日: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'day'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span> <span><span><span class="hljs-section">年: 2022</span></span><span>
</span><span><span class="hljs-section">月: 7</span></span><span>
</span><span><span class="hljs-section">日: 16</span></span><span>
</span></span>この例では、 CAL_FROM_JD()は、 2022年7月16日にジュリアン2459373.5をグレゴリオの日付に変換します。
ジュリアンデイ(JD)は浮動値であり、整数部は紀元前4713年1月1日の正午からの日数を表し、小数部は時刻を表します。たとえば、2459373.5のJDはその日の正午を意味しますが、2459373.25のJDは当日(真夜中)の0:00を意味します。異なるカレンダーシステムの場合、 CAL_FROM_JD()は、特定のルールに従って日付の計算を調整します。
ジュリアンカレンダーをジュリアンカレンダーに変換する場合は、次のコードを使用できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$jd</span></span><span> = </span><span><span class="hljs-number">2459373.5</span></span><span>;
</span><span><span class="hljs-variable">$calendar</span></span><span> = CAL_JULIAN; </span><span><span class="hljs-comment">// ジュリアンカレンダー</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">cal_from_jd</span></span><span>(</span><span><span class="hljs-variable">$jd</span></span><span>, </span><span><span class="hljs-variable">$calendar</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"年: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'year'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"月: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'month'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"日: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>[</span><span><span class="hljs-string">'day'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>出力:
<span><span><span class="hljs-section">年: 2022</span></span><span>
</span><span><span class="hljs-section">月: 7</span></span><span>
</span><span><span class="hljs-section">日: 3</span></span><span>
</span></span>ジュリアンカレンダーとグレゴリオカレンダーの日付は、ジュリアンカレンダーとグレゴリオカレンダーの間に日付計算に違いがあるため、異なることがわかります。
精度の問題: CAL_FROM_JD()関数の精度は、日付の日数がある限りのみであるため、通常は着信JD値が浮動数であり、フラクショナル部分は日付の出力に影響しません(時間または数分に正確にする必要がない限り)。より正確な時間が必要な場合は、他の時間処理機能と組み合わせて実装できます。
日付範囲:異なるカレンダーシステムには、日付の範囲が異なります。たとえば、ヘブライ語とイスラムのカレンダーの開始日と有効な範囲は、グレゴリオ暦およびジュリアンカレンダーのカレンダーとは異なるため、ニーズに応じて適切なカレンダーシステムを選択する必要があります。
エラー処理:着信JD値が有効であることを確認してください。無効なJDが渡された場合、 CAL_FROM_JD()関数がFALSEを返すため、使用するときは例外処理が必要です。