PHP实现澳大利亚财年天数计算(区分平闰年)求助
澳大利亚财年天数判断(PHP实现)
澳大利亚财年范围为当年7月1日至次年6月30日,需根据输入日期判断所属财年的总天数:若财年包含闰年2月29日则返回366,否则返回365。要求仅使用date()、strtotime()等基础PHP函数,禁止使用OOP。
实现代码
function getAusFinancialYearDays($inputDate) { // 将输入日期转换为时间戳,同时校验有效性 $timestamp = strtotime($inputDate); if (!$timestamp) { return false; } // 获取输入日期的月份(1-12) $month = date('n', $timestamp); // 确定财年的结束年份:7月及之后的日期,结束年份为当前年份+1;否则为当前年份 $endYear = $month >= 7 ? date('Y', $timestamp) + 1 : date('Y', $timestamp); // 判断结束年份是否为闰年(闰年的2月29日存在,date('L')返回1) $isLeapYear = date('L', strtotime("$endYear-02-29")); return $isLeapYear ? 366 : 365; } // 测试示例 echo getAusFinancialYearDays('2023-08-16'); // 输出366 echo getAusFinancialYearDays('2024-06-30'); // 输出366 echo getAusFinancialYearDays('2024-07-01'); // 输出365 echo getAusFinancialYearDays('2020-06-30'); // 输出366
逻辑说明
- 日期有效性校验:通过
strtotime()将输入日期转为时间戳,若转换失败则返回false处理无效输入; - 财年结束年份判定:输入日期在7月及以后,所属财年结束于次年;若在7月以前,结束于当年;
- 闰年判断:利用
date('L')判断结束年份是否为闰年——由于澳大利亚财年覆盖到结束年份的6月30日,只要结束年份是闰年,其2月29日必然落在财年范围内,因此直接以此判定财年总天数。
内容的提问来源于stack exchange,提问作者iggiesboy
相关产品推荐
相关产品推荐

