通过将x天添加到当前日期来计算月中的日期

时间:2014-02-15 17:58:01

标签: php algorithm

我正在寻找一个更“低级”的解决方案来解决这个问题。我知道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到月只是看起来有点混乱。如果有人看到更好的方式,我真的很感激这方面的帮助..

提前致谢!

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'));