是否有内置PHP
函数可以执行此操作,还是需要将某些内容拼凑在一起?
答案 0 :(得分:7)
你需要自己编写,但这并不难:
$now = new DateTime();
$zero = new DateTime('0000-00-00'); // -0001-11-30 - Nov 30, 1 BC. Interesting.
$diff = $now->diff($zero);
echo $diff->format('%a days'); // 735728 days
Demo使用文字年零。你显然希望在那里放一个有效的日期。
$now = new DateTime();
$zero = new DateTime('0001-01-01');
$diff = $now->diff($zero);
echo $diff->format('%a days'); // 735330 days
作为一个班轮:
echo (new DateTime())->diff(new DateTime('0001-01-01'))->format('%a days');
作为一项功能:
function toDays($date) {
return (new DateTime())->diff(new DateTime($date))->format('%a');
}
答案 1 :(得分:1)
DateTime类可以处理非常广泛的日期。这可以通过计算0000-00-00
(DateTime认为是有效日期)和今天UTC的天数来实现。将结果除以365,你得到从第0年开始的年数。这可以做成一个很好的单行:
$days = date_create('now')->diff(date_create('0000-00-00'))->format('%a');
$years = floor($days / 365.242); // => 2014
请注意,Anno Domini(AD)系统中不存在零年。
答案 2 :(得分:1)
您可以使用Julian日计数,即使用cal_to_js(),参见http://www.php.net/manual/de/function.cal-to-jd.php,即使公历中没有第0年。