360 days/year, 30 days/month 格式的两个日期如何相差?
How to get the difference between two dates with 360 days/year, 30 days/month format?
我可以使用以下代码获取两个日期(DD/MM/YY 格式)之间的差异;
$date1 = new DateTime("1986-04-27");
$today = new DateTime("now");
$interval = $date1->diff($today);
$year = $interval->format('%y');
$month = $interval->format('%m');
$day = $interval->format('%d');
它在计算 1 年 2 个月时完美无缺,但当我尝试计算 1 年 2 个月 3 天时,它没有给我准确的结果。
我想得到两个日期之间的差异,一年360天,一个月30天,不计算闰年..
例如;如果一个月有 31 天,系统将按 30 天计算。
如果一年有 365 天,系统将按 1 年 5 天计算。 (360 + 5)
我该怎么做?
谢谢..
DateTime class 将根据实际日期计算差异。在您的示例中它是否有效是随机的。如果你想为月份使用自定义长度,忽略闰年等,那么你将不得不自己创建自定义函数。
虽然我不太明白这样做的意义?
只需获取天数并减去年/月。
$totalDays = $interval->format('%a');
$years = 0;
$months = 0;
while ($totaldays >= 360) { $years++; $totaldays -=360; }
while ($totaldays >= 30) { $months++; $totaldays -=30; }
$days = $totalDays
但为什么需要损坏的日期格式?
方法如下:
function diff360($date1, $date2) {
$date1 = new DateTime($date1);
$date2 = new DateTime($date2);
$diff = $date1->diff($date2);
$days = ($date2->format('d') + 30 - $date1->format('d')) % 30;
return array(
"y" => $diff->y,
"m" => $diff->m,
"d" => $days,
"totaldays" => $diff->y * 360 + $diff->m * 30 + $days
);
}
$result = diff360("2016-02-06", "2016-03-06");
var_export($result);
输出:
array (
'y' => 0,
'm' => 1,
'd' => 0,
'totaldays' => 30,
)
我可以使用以下代码获取两个日期(DD/MM/YY 格式)之间的差异;
$date1 = new DateTime("1986-04-27");
$today = new DateTime("now");
$interval = $date1->diff($today);
$year = $interval->format('%y');
$month = $interval->format('%m');
$day = $interval->format('%d');
它在计算 1 年 2 个月时完美无缺,但当我尝试计算 1 年 2 个月 3 天时,它没有给我准确的结果。
我想得到两个日期之间的差异,一年360天,一个月30天,不计算闰年..
例如;如果一个月有 31 天,系统将按 30 天计算。 如果一年有 365 天,系统将按 1 年 5 天计算。 (360 + 5)
我该怎么做?
谢谢..
DateTime class 将根据实际日期计算差异。在您的示例中它是否有效是随机的。如果你想为月份使用自定义长度,忽略闰年等,那么你将不得不自己创建自定义函数。
虽然我不太明白这样做的意义?
只需获取天数并减去年/月。
$totalDays = $interval->format('%a');
$years = 0;
$months = 0;
while ($totaldays >= 360) { $years++; $totaldays -=360; }
while ($totaldays >= 30) { $months++; $totaldays -=30; }
$days = $totalDays
但为什么需要损坏的日期格式?
方法如下:
function diff360($date1, $date2) {
$date1 = new DateTime($date1);
$date2 = new DateTime($date2);
$diff = $date1->diff($date2);
$days = ($date2->format('d') + 30 - $date1->format('d')) % 30;
return array(
"y" => $diff->y,
"m" => $diff->m,
"d" => $days,
"totaldays" => $diff->y * 360 + $diff->m * 30 + $days
);
}
$result = diff360("2016-02-06", "2016-03-06");
var_export($result);
输出:
array (
'y' => 0,
'm' => 1,
'd' => 0,
'totaldays' => 30,
)