php当前日期自动加一年,在PHP日期中添加天数时,不会增加到下一年

我正在抓取一个网站,我必须在其中输入日期范围才能获取数据.我的开始日期范围是2009-01-01至2009-01-14.然后,我将下一个日期范围增加15天,这样我就总是做14天的大块工作(以免每次刮取都获得太多数据).

执行此操作的代码是:

$result = sqlGetState($db); //a sql query that gets the last start date - end date

$startDate = $result['startDate']; // start date from db

$endDate = $result['endDate']; // end date from db

$newStartDate = date('Y-m-d', strtotime($endDate. ' + 1 days')); // create a new start date, which is equal to the previous end date + 1 day

$newEndDate = date('Y-m-d', strtotime($newStartDate. ' + 14 days')); // create a new end date, which is equal to the new start date + 14 days.

$timestamp = date('Y-m-d H:i:s', time() ); //2016-08-07 08:42:43

$affected_rows = sqlUpdateState($db,$newStartDate,$newEndDate,$timestamp); // update the "state" table with the new date values

因此,“状态”表中的内容是执行操作的时间戳,新日期和新日期14天.

这进行得很好,但是在某个时候我检查了存储html的表,发现没有新页面被存储.然后我看一下我的状态表,然后看到

开始日期:1970年2月1日;结束日期:1970年1月16日.

我认为PHP足够“聪明”,可以知道当涉及到12/31时,它将日期增加到下一年.这是PHP date函数中的缺陷,还是我应该做的事情?

更新:09/16/2016

根据@ bill-karwin选择的最佳答案,这是我修改后的代码,并且效果很好:

$result = sqlGetState($db);

$startDate = date_create($result['startDate']);

$endDate = date_create($result['endDate']);

echo "

saved start date: ".$startDate->format("Y-m-d")."

";

echo "

saved end date: ".$endDate->format("Y-m-d")."

";

$newStartDate = date_add($endDate, date_interval_create_from_date_string("1 days"));

$newStartDateString = $newStartDate->format("Y-m-d");

$newEndDate = date_add($newStartDate, date_interval_create_from_date_string("14 days"));

$newEndDateString = $newEndDate->format("Y-m-d");

echo "

new start date: " . $newStartDateString . "

";

echo "

new end date: " . $newEndDateString . "

";

$affected_rows = sqlUpdateState($db,$newStartDateString,$newEndDateString,$timestamp);

解决方法:

我不认为strtotime()可以像您一样用于执行日期算术.

我建议您使用以下方式进行编码:

$startDate = date_create($result['startDate']);

$endDate = date_create($result['endDate']);

$newStartDate = date_add($endDate, date_interval_create_from_date_string("1 days"));

$newEndDate = date_add($newStartDate, date_interval_create_from_date_string("14 days"));

$timestamp = date_create();

请参阅手册:

标签:mysql,php,date

来源: https://codeday.me/bug/20191118/2026143.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值