PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在PHP日期中添加天数时,不会增加到下一年大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

执行此操作的代码是:

@H_419_6@$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选择的最佳答案,这是我修改后的代码,并且效果很好:

@H_419_6@$result = sqlGetState($db); $startDate = date_create($result['startDate']); $endDate = date_create($result['endDate']); echo "<p>saved start date: ".$startDate->format("Y-m-d")."</p>"; echo "<p>saved end date: ".$endDate->format("Y-m-d")."</p>"; $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 "<p>new start date: " . $newStartDateString . "</p>"; echo "<p>new end date: " . $newEndDateString . "</p>"; $affected_rows = sqlupdateState($db,$newStartDateString,$newEndDateString,$timestamp);

解决方法:

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

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

@H_419_6@$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();

请参阅手册:

> http://php.net/manual/en/datetime.construct.php@H_675_34@> http://php.net/manual/en/datetime.add.php@H_675_34@> http://php.net/manual/en/function.date-interval-create-from-date-string.php

大佬总结

以上是大佬教程为你收集整理的在PHP日期中添加天数时,不会增加到下一年全部内容,希望文章能够帮你解决在PHP日期中添加天数时,不会增加到下一年所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: