1

我目前正在尝试计算期间的数量(每个期间为 1 周,在某个日期或某天之后)。假设第一个时期从 2013 年 1 月 1 日(星期二)开始,直到 2013 年 1 月 29 日(星期二)(总共 4 个时期)。

我有一个看起来像的表:

id | startDate (datetime) | endDate (datetime)

我有两个输入字段,用户可以在其中填写 astart dateend date。我想填写两者之间的任何日期01-01-201329-01-2013并决定它再次经过一个星期二(期间开始的日期)多少次。

因此,如果我选择01-01-2013 until 07-01-2013会导致:1,但如果我选择06-01-2013 till 09-01-2013这将导致2并且06-01-2013 till 16-01-2013会导致3等。

需要明确的是,我不想知道这两个日期之间的周数,只想知道它在数据库中给出的同一天(星期二)“交叉”的次数。每个周期为 1 周。有没有人可以帮助我?

4

2 回答 2

2

使用 PHP 的date()函数。

$startday = strtotime($start_date_from_db);//date from db;
$endday = strtotime($end_date_from_db);//date from db;
$counter = 0;
for($i=$startday; $i<=$endday; $i+=86400) {
    $current_day = date('w', $i);
    if($current_day == 2) { //0 for sunday, 1 for monday, 2 for tuesday
        $counter++;
    }
}
于 2013-03-11T16:11:54.433 回答
1

比较日期时,一个好的方法是:

1-将日期转换为时间戳:

$timestamp1 = strtotime($date1);
$timestamp2 = strtotime($date2);

2-执行所需的操作,在这种情况下:

$timebetween = $timestamp2 - $timestamp1;

3-将结果(秒数)转换为所需值,在这种情况下:

$weeks= $timebetween / 604800;
于 2013-03-11T16:21:53.143 回答