我正在寻找一个更“低级”的解决方案来解决这个问题。我知道PHP中有很好的功能,但我正在寻找更通用的算法(以提高我的理解力)。
假设假日距离日期正好是69天。函数原型可能如下所示:
function calculate_holiday($month, $day) { }
月份和日期可以是任何东西,例如,假设$ month = 4,$ day = 15
我的解决方案: 由于某些月份的总天数不同,因此需要考虑这一点,因此我们假设我们有一个函数get_month_days($ month),它返回该月的天数。所以我在想:
function calculate_holiday($month, $day)
{
$in_days = 69;
for ($i = 0; $i < $in_days; $i++)
{
if (get_month_days($month) == $i)
{
// reached total number of days in that month, set day to 1 and add 1
// to $month variable
$day = 1;
$month += 1;
} else {
$day += 1;
}
}
return array('month' => $month, 'day' => $day);
}
这很有效,但我认为有一个更简单的版本。感觉就像将日期设置为1并且添加1到月只是看起来有点混乱。如果有人看到更好的方式,我真的很感激这方面的帮助..
提前致谢!
答案 0 :(得分:1)
使用DateTime http://us1.php.net/manual/pl/class.datetime.php, 它现在应该是在PHP中使用日期的标准。
function calculate_holiday($year, $month, $day, $in_days = 69;) {
$date = new \DateTime();
$date->setDate($year, $month, $day);
$date->modify('+'.$in_days.' days');
return array('month' => $date->format('m'), 'day' => $date->format('d'));
}
print_r(calculate_holiday('2014', '02', '15'));