PHP函数在两个发布日期之间循环工作日
可能重复:PHP函数在两个发布日期之间循环工作日,php,date,loops,Php,Date,Loops,可能重复: 我不熟悉这种PHP编程,所以请耐心听我说 我希望用户能够发布两个日期,一个startdate和一个enddate,并从这些日期计算业务日期(不包括周六和周日),然后将其插入MySQL 例如,如果我有这个表格 <form action='update.php' method='post'> <input type='text' name='start_date'> <input type='text' name='end_date'>
我不熟悉这种PHP编程,所以请耐心听我说 我希望用户能够发布两个日期,一个startdate和一个enddate,并从这些日期计算业务日期(不包括周六和周日),然后将其插入MySQL 例如,如果我有这个表格
<form action='update.php' method='post'>
<input type='text' name='start_date'>
<input type='text' name='end_date'>
<input type='submit' name='submit'>
</form>
现在,我想循环查看日期并创建一个MySQL查询,该查询的运行方式如下:
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-01');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-02');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-03');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-04');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-05');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-08');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-09');
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-10');
我知道这可能不是一个好的解决方案,但这正是我所需要的
如何创建循环?用于获取一周中某一天的编号。然后,您可以检查这一天是否符合您的要求
p.S.date('N')
是在PHP5.1.0中引入的用于获取一周中某一天的数字。然后,您可以检查这一天是否符合您的要求
$startDate = $start_date;
$endDate = $send_date;
// Convert to UNIX timestamps
$currentTime = strtotime($startDate);
$endTime = strtotime($endDate);
// Loop until we reach the last day
$result = array();
while ($currentTime <= $endTime) {
if (date('N', $currentTime) < 6) {
$result[] = date('Y-m-d', $currentTime);
}
$currentTime = strtotime('+1 day', $currentTime);
}
// start insertion
foreach($result as $value)
{
mysql_query("INSERT INTO tbl_dates (date_value) VALUES '".$value."'");
}
p.S.date('N')
是在PHP5.1.0中引入的$startDate=$start\u date;
$startDate = $start_date;
$endDate = $send_date;
// Convert to UNIX timestamps
$currentTime = strtotime($startDate);
$endTime = strtotime($endDate);
// Loop until we reach the last day
$result = array();
while ($currentTime <= $endTime) {
if (date('N', $currentTime) < 6) {
$result[] = date('Y-m-d', $currentTime);
}
$currentTime = strtotime('+1 day', $currentTime);
}
// start insertion
foreach($result as $value)
{
mysql_query("INSERT INTO tbl_dates (date_value) VALUES '".$value."'");
}
$endDate=$send\u date;
//转换为UNIX时间戳
$currentTime=strotTime($startDate);
$endTime=strottime($endDate);
//循环直到我们到达最后一天
$result=array();
而($currentTime$startDate=$start\u date;
$endDate=$send\u date;
//转换为UNIX时间戳
$currentTime=strotTime($startDate);
$endTime=strottime($endDate);
//循环直到我们到达最后一天
$result=array();
而($currentTime仅基于PHP
标记以自己的风格编写代码->
<?php
$_POST['start_date'] = '2012-10-01';
$_POST['end_date'] = '2012-10-10';
$start = explode('-',$_POST['start_date']);
$end = explode('-',$_POST['end_date']);
$i = (int)$start[2];
for($i; $i<$end[2]; $i++)
{
$i = sprintf('%02d', $i);
echo "INSERT INTO tbl_dates (date_value) VALUES ('2012-10-$i')";
echo "<br />";
}
?>
仅基于PHP
tag->
<?php
$_POST['start_date'] = '2012-10-01';
$_POST['end_date'] = '2012-10-10';
$start = explode('-',$_POST['start_date']);
$end = explode('-',$_POST['end_date']);
$i = (int)$start[2];
for($i; $i<$end[2]; $i++)
{
$i = sprintf('%02d', $i);
echo "INSERT INTO tbl_dates (date_value) VALUES ('2012-10-$i')";
echo "<br />";
}
?>
+1对于清晰的解释,我不建议这样做,它不是标准的数据库设计。它将提供大量的数据重复+1对于清晰的解释,我不建议这样做,它不是标准的数据库设计。它将提供大量的数据重复。如果您担心PHP版本,您可以使用w
。@Salman答:谢谢注意。在格式列表中没有看到。如果您担心PHP版本,可以使用w
。@SalmanA:谢谢注意。在格式列表中没有看到。请不要从StackOverflow上的其他问题复制代码。如果存在答案,您可以从中复制代码,这意味着您要将其粘贴到的问题是重复的。我复制的部分是解决方案的一部分。我还包括了完成解决方案的下一部分。这也是我在帖子中提到源代码的原因。请不要复制StackOverflow上其他问题的代码。如果存在答案,您可以从中复制代码,这意味着您要将其粘贴到的问题是重复的副本。我复制的部分是解决方案的一部分。我还包括了完成解决方案的下一部分。这就是我在帖子中也提到源代码的原因。此代码不排除周六和周日,但无论如何感谢。@David啊,我的错,我只是误解了这一点&认为这是一个仅循环的问题此代码不排除此问题周六和周日,但无论如何还是要感谢。@David啊,我的错,我只是误解了这一点&认为这只是一个循环问题