应该是新月的增加日期

时间:2015-12-02 16:09:36

标签: php date

我有一个PHP脚本,它根据当天记录事物。因此,它将每周输入一组输入。

我正确地获取了数据,但是当我$day ++;时,它会增加一天,在月末过去而不会勾选月份。

示例:

//12/29
//12/30
//12/31
//12/32
//12/33

它应该是什么样的

//12/29
//12/30
//12/31
//01/01
//01/02

我的脚本如下:

$week = date ("Y-m-d", strtotime("last sunday"));
$day = $week;
$run = array(7);  //this is actually defined in the data posted to the script, which is pretty much just getting the value of the array index for the query string.
foreach( $run as $key=>$value)
{
    $num = $key + 1;
    $items[] = "($num, $user, $value, 'run', '$day')";
    echo "".$day;
    $day ++;
}

我是否应该以不同的方式操纵日期时间以增加日期?

3 个答案:

答案 0 :(得分:3)

您可以使用

$day = date("Y-m-d", strtotime($day . " +1 day"));

而不是

$day++;

请参阅live demo in ideone

答案 1 :(得分:2)

您将$day称为"日期时间"但它只是一个字符串 - 这就是date()返回的内容。因此,当您执行$day++时,您要将1添加到"2015-12-02"。 PHP将尽其所能将"2015-12-02"转换为数字,然后向其添加1,这不是日期数学。这是一个简单的例子:

<?php
$name = "Fallenreaper1";
$name++;
echo $name
?>

这将输出:

Fallenreaper2

我会这样做,使用适当的数据类型(DateTime):

<?php
$day = new DateTime('last sunday');

$run = array(7);
foreach ($run as $key => $value) {
  $num = $key + 1;
  $dayStr = $day->format('Y-m-d');
  $items[] = "($num, $user, $value, 'run', '$dayStr')";
  echo $dayStr;
  $day->modify('+1 day');
}

答案 2 :(得分:0)

为了增加时间,你应该使用strtotime(“+ 1天”);

这是使用它的简单示例

<?php
$now_time = time();
for($i=1;$i<8;$i++) {
    $now_time = strtotime("+1 day", $now_time);
    echo date("Y-m-d", $now_time) . "<br>";
}
?>