如果您需要一种简单的方法将十进制儒略日转换为 Unix 时间戳,您可以使用
$unixTimeStamp = ($julianDay - 2440587.5) * 86400;
2440587.5 是 1970 年 1 月 1 日 0:00 UTC 的儒略日
86400 是一天中的秒数
(PHP 4, PHP 5, PHP 7, PHP 8)
jdtounix — 将儒略日转换为 Unix 时间戳
julian_day
一个儒略日数字,在 64 位系统上介于 2440588
和 106751993607888
之间,在 32 位系统上介于 2440588
和 2465443
之间。
给定儒略日开始(午夜,而非中午)的 Unix 时间戳
如果 julian_day
超出允许范围,则会抛出 ValueError。
版本 | 描述 |
---|---|
8.0.0 | 此函数不再在失败时返回 false ,而是抛出 ValueError。 |
7.3.24, 7.4.12 | julian_day 的上限已扩展。以前,无论架构如何,它都是 2465342 。 |
如果您需要一种简单的方法将十进制儒略日转换为 Unix 时间戳,您可以使用
$unixTimeStamp = ($julianDay - 2440587.5) * 86400;
2440587.5 是 1970 年 1 月 1 日 0:00 UTC 的儒略日
86400 是一天中的秒数
请记住,unixtojd() 假设您的时间戳为 GMT,但 jdtounix() 返回本地时间的时间戳。
这让我迷惑了好几次。
所以如果你有
$timestamp1 = time();
$timestamp2 = jdtounix(unixtojd($timestamp1));
除非您的本地时间与 GMT 相同,否则 $timestamp1 将不等于 $timestamp2。
unixtojd() 假设您的时间戳为 GMT,但 jdtounix() 返回本地时间的时间戳。
所以
<?php
$d1=jdtogregorian(unixtojd(time()));
$d2= gmdate("m/d/Y");
$d3=date("m/d/Y");
?>
$d1 始终等于 $d2,但 $d1 可能与 $d3 不同