You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP Date获取儒略日及年内儒略日天数?

解决PHP日期处理的两个儒略日问题

嘿,我来帮你搞定这两个PHP日期相关的问题,直接上干货!

1. 获取天文意义上的儒略日(Julian Date)

PHP的date()函数没有直接输出儒略日的格式符,不过我们可以借助DateTime类或者时间戳来计算。儒略日是从公元前4713年1月1日正午开始的连续天数,计算的时候要注意基于UTC时区(避免时区偏移影响结果)。

代码示例:

$dateString = '2018-04-01';
// 初始化DateTime对象,指定UTC时区
$date = new DateTime($dateString, new DateTimeZone('UTC'));
// 获取时间戳(从1970-01-01 00:00:00 UTC到指定日期的秒数)
$timestamp = $date->getTimestamp();
// 计算儒略日:1970-01-01 00:00:00 UTC对应的儒略日是2440587.5
$julianDate = $timestamp / 86400 + 2440587.5;

echo $julianDate; // 输出结果约为2458208.5

2. 获取年内儒略日天数(一年中的第几天)

这个需求其实就是要得到指定日期是当年的第几天,比如你给的2018-04-01预期返回91。PHP有现成的格式符可以用,不过要注意一个小坑:

方法1:用date()函数

$date = '2018-04-01';
// 用'z'格式符获取当年的第0天开始的数值,所以要加1
$dayOfYear = date('z', strtotime($date)) + 1;

echo $dayOfYear; // 输出91

方法2:用DateTime类(更推荐,处理复杂日期更可靠)

$dateObj = new DateTime('2018-04-01');
// 同样,'z'返回的是0起始的数值,加1得到实际天数
$dayOfYear = $dateObj->format('z') + 1;

echo $dayOfYear; // 输出91

注意点:

z格式符返回的是0(1月1日)到364或365(12月31日)的整数,所以必须加1才能得到我们日常说的“第N天”。比如2020年(闰年)的3月1日,date('z', strtotime('2020-03-01'))返回59,加1后是60,符合闰年的天数计算。

内容的提问来源于stack exchange,提问作者Sate Wedos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:34:02