Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算特定日期后的周数_Php_Mysql - Fatal编程技术网

Php 计算特定日期后的周数

Php 计算特定日期后的周数,php,mysql,Php,Mysql,我目前正在尝试计算周期的数量(每个周期为1周,在某个日期或日期之后)。假设第一期从2013年1月1日(星期二)开始至2013年1月29日(星期二)(共4期) 我有一张桌子,看起来像: id | startDate (datetime) | endDate (datetime) 我有两个输入字段,用户可以在其中填写开始日期和结束日期。我想填写01-01-2013和29-01-2013之间的任何日期,并决定星期二(期间开始的日期)又过了多少次 因此,如果我选择01-01-2013至07-01-20

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

我有一张桌子,看起来像:

id | startDate (datetime) | endDate (datetime)
我有两个输入字段,用户可以在其中填写
开始日期
结束日期
。我想填写
01-01-2013
29-01-2013
之间的任何日期,并决定星期二(期间开始的日期)又过了多少次

因此,如果我选择
01-01-2013至07-01-2013
将导致:
1
,但如果我选择
06-01-2013至09-01-2013
,这将导致
2
,而
06-01-2013至16-01-2013
将导致
3

说清楚一点,我不想知道两个日期之间的周数,只想知道数据库中给出的它“穿越”同一天(星期二)的次数。每个周期为1周。有人能帮我吗?

使用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++;
    }
}
$startday=strottime($start\u date\u from\u db)//来自db的日期;
$endday=strottime($end\u date\u from\u db)//来自db的日期;
$counter=0;

对于($i=$startday;$i比较日期时,一个好方法是:

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

$timestamp1 = strtotime($date1);
$timestamp2 = strtotime($date2);
2-执行所需操作,在这种情况下:

$timebetween = $timestamp2 - $timestamp1;
$weeks= $timebetween / 604800;
3-将结果(秒数)转换为所需值,在这种情况下:

$timebetween = $timestamp2 - $timestamp1;
$weeks= $timebetween / 604800;

为了澄清,您想知道X天(星期二)有多少次介于日期Y和Z之间?是的!这正是我要找的,我无法理解它的搜索!尝试和/或许多其他mysql日期函数。mkaatman,谢谢你的回答,很抱歉我搜索了,但我找不到,可能使用了错误的关键字。无论如何,谢谢!非常浪费,特别是如果它是“大的”日期范围。有更简单的方法获取日期范围长度。@MarcB在OP的例子中,开始日期和结束日期之间的差异只有两个月。所以这不会是一个问题。