与闰年的日期差异

时间:2011-07-12 05:52:52

标签: php date datediff

我有5个不同的时间表,为期5周:

  1. 第一周=周一至周五(早上8点至下午5点)&&周六和周日休息日
  2. 第二周=周一至周五(上午10点至下午6点)&&周六和周日休息日
  3. 第三周=周一至周五(上午11点至晚上7点)&&周六和周日休息日
  4. 第四周=周一休息日&&周二至周六(上午10:30至下午6:30)&&周日休息日
  5. 第五周=周一休息日&&周二至周六(上午8:30至下午5:30)&&周日休息日
  6. 根据我的计算数组[0],第一周的星期一[0]设定为2011年4月25日。

    我有这段代码来计算输入日期和开始日期之间的差异,即2011年4月25日。

    $tdays = floor((strtotime($date2) - strtotime($date1))/86400);
    

    我现在可以从2011年4月开始计算我的工作时间表,直到2012年2月。 但是,如果我输入2012年2月以后的日期,由于闰年,输出是错误的。这有什么技巧吗?

1 个答案:

答案 0 :(得分:1)

如果你能够使用php 5.3,你应该使用date_diff()

或尝试这样的事情:

<?php
        function dateDifference($startDate, $endDate)
        {
            $startDate = strtotime($startDate);
            $endDate = strtotime($endDate);
            if ($startDate === false || $startDate < 0 || $endDate === false || $endDate < 0 || $startDate > $endDate)
                return false;

            $years = date('Y', $endDate) - date('Y', $startDate);

            $endMonth = date('m', $endDate);
            $startMonth = date('m', $startDate);

            // Calculate months
            $months = $endMonth - $startMonth;
            if ($months <= 0)  {
                $months += 12;
                $years--;
            }
            if ($years < 0)
                return false;

            // Calculate the days
                        $offsets = array();
                        if ($years > 0)
                            $offsets[] = $years . (($years == 1) ? ' year' : ' years');
                        if ($months > 0)
                            $offsets[] = $months . (($months == 1) ? ' month' : ' months');
                        $offsets = count($offsets) > 0 ? '+' . implode(' ', $offsets) : 'now';

                        $days = $endDate - strtotime($offsets, $startDate);
                        $days = date('z', $days);   

            return array($years, $months, $days);
        }
?>