我有一个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 ++;
}
我是否应该以不同的方式操纵日期时间以增加日期?
答案 0 :(得分:3)
答案 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>";
}
?>