首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 入門

PHP Calendar 函數完整指南:儒略日曆轉換

     編輯:PHP 入門

PHP Calendar 函數完整指南:儒略日曆轉換


簡介

Calendar 擴展提供不同曆法格式間的轉換功能,核心基於 Julian Day Count (儒略日計數) — 從公元前 4713 年 1 月 1 日起算的連續日數。轉換流程:來源曆法 → Julian Day Count → 目標曆法。注意:Julian Day Count ≠ Julian Calendar (儒略曆)。

Windows 版 PHP 內建;Linux 需編譯時加入 --enable-calendar。


核心轉換函數

函數說明
cal_to_jd()指定曆法日期 → Julian Day Count
cal_from_jd()Julian Day Count → 指定曆法日期
cal_days_in_month()指定年份/曆法的月份天數
cal_info()取得指定曆法資訊

支援曆法常數

  • CAL_GREGORIAN — 格里高利曆 (現行國際標準)
  • CAL_JULIAN — 儒略曆
  • CAL_JEWISH — 猶太曆
  • CAL_FRENCH — 法國共和曆

各曆法專用轉換函數

函數說明
gregoriantojd() / jdtogregorian()格里高利曆 ↔ Julian Day Count
juliantojd() / jdtojulian()儒略曆 ↔ Julian Day Count
jewishtojd() / jdtojewish()猶太曆 ↔ Julian Day Count
frenchtojd() / jdtofrench()法國共和曆 ↔ Julian Day Count
unixtojd() / jdtounix()Unix 時間戳 ↔ Julian Day Count

實用工具函數

函數說明
jddayofweek()取得 Julian Day Count 對應的星期幾 (數字/縮寫/全名)
jdmonthname()取得月份名稱 (依曆法與模式)
easter_date()取得指定年份復活節午夜的 Unix 時間戳
easter_days()取得指定年份復活節與 3 月 21 日的天數差

預定義常數

  • 曆法類型:CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH, CAL_FRENCH, CAL_NUM_CALS
  • 星期顯示模式:CAL_DOW_DAYNO, CAL_DOW_SHORT, CAL_DOW_LONG
  • 月份顯示模式:CAL_MONTH_GREGORIAN_SHORT, CAL_MONTH_GREGORIAN_LONG, CAL_MONTH_JULIAN_SHORT, CAL_MONTH_JULIAN_LONG, CAL_MONTH_JEWISH, CAL_MONTH_FRENCH
  • 復活節計算模式:CAL_EASTER_DEFAULT, CAL_EASTER_ROMAN, CAL_EASTER_ALWAYS_GREGORIAN, CAL_EASTER_ALWAYS_JULIAN
  • 猶太曆顯示選項:CAL_JEWISH_ADD_ALAFIM_GERESH, CAL_JEWISH_ADD_ALAFIM, CAL_JEWISH_ADD_GERESHAYIM

實用範例

1. 格里高利曆轉 Julian Day Count

<?php
$jd = gregoriantojd(1, 15, 2024); // 月, 日, 年
echo "Julian Day Count: $jd\n"; // 2460310
?>

2. Julian Day Count 轉猶太曆

<?php
$jd = gregoriantojd(1, 15, 2024);
echo jdtojewish($jd, true, CAL_JEWISH_ADD_GERESHAYIM);
// 輸出: 5 Tevet 5784
?>

3. 取得某月天數 (格里高利曆)

<?php
echo cal_days_in_month(CAL_GREGORIAN, 2, 2024); // 29 (閏年)
?>

4. 計算復活節日期

<?php
$year = 2024;
$ts = easter_date($year);
echo date('Y-m-d', $ts); // 2024-03-31
?>

5. 顯示 Julian Day Count 的星期與月份

<?php
$jd = gregoriantojd(1, 15, 2024);
echo jddayofweek($jd, CAL_DOW_LONG) . "\n"; // Monday
echo jdmonthname($jd, CAL_MONTH_GREGORIAN_LONG) . "\n"; // January
?>

應用場景

  • 歷史日期研究、天文計算需使用 Julian Day Count 進行跨曆法運算。
  • 多語系/多文化系統需支援猶太曆、伊斯蘭曆 (需額外庫) 等非格里高利曆。
  • 宗教節日計算 (復活節、猶太節慶)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved