我正在尝试将天数转换为年数和剩余天数格式。这就是我试过的:
<?php
$reg_date = date('Y-m-d', strtotime($whois_details[5])); // 1997-09-15
$total_days = (date('Y-m-d') - $reg_date) * 365; // 2014-07-30
$total_years = intval($total_days / 365);
$remaining_days = ($total_days % 365) % 30;
if ($total_days < 365) {
$remaining_days = $total_days;
}
echo $total_years.' years and '.$remaining_days.' days';
?>
OUTPUT - for 300
0 years and 300 days - THIS IS OK
OUTPUT - for 500
1 years and 15 days - THIS IS NOT OK
应该 - 为500
1 years and 135 days
我错了什么。我检查了C尖锐的问题并尝试转换它。
答案 0 :(得分:6)
我不知道你复制的代码为什么会这样做,你可以链接吗?
这当然忽略了日期的复杂性(如闰年),但作为该算法通常如何工作的一个例子。考虑到闰年,您需要知道所涉及的时间跨度是否包括任何时间。如果你给的只是几天,这就是你能做的最好的事情。
$days = 500;
$years_remaining = intval($days / 365); //divide by 365 and throw away the remainder
$days_remaining = $days % 365; //divide by 365 and *return* the remainder
答案 1 :(得分:3)
如果你想考虑闰年,你应该考虑在PHP中使用日期函数。
$date1 = new DateTime('2014-07-30');
$date2 = new DateTime('1997-09-15');
$interval = $date2->diff($date1);
echo $interval->format('%Y years, %m months, %d days');
或您的问题
$years = $interval->format('%Y');// total years
$days = $interval->format('%a') - (int)$years*365;// total days - total years * days per year
但我相信以上2行可以用更多日期函数的方式完成。