1

可能重复:
使用 PHP 从 MySQL 打印两个日期之间的业务日期的 Ymd 列表

我是这种 PHP 编程的新手,所以请多多包涵。

我希望用户能够发布两个日期,一个开始日期和一个结束日期,并从这些日期计算营业日期(不包括周六和周日)并将其插入到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>

更新.php

if(isset($_POST['submit'])) {

   $start_date = $_POST['start_date']; //Let's say this is 2012-10-01
   $send_date = $_POST['end_date']; //Let's say this is 2012-10-10

}

现在我想遍历日期并创建一个运行如下的 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');

我知道这可能不是一个好的解决方案,但这正是我需要的。

如何创建循环?

4

3 回答 3

1
$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."'");
}

Source : Print Y-m-d list of business dates between two dates from MySQL using PHP

Omg! I just realized that it's a thread started by you. You already have your answer

于 2012-10-31T08:19:48.170 回答
0

用于date('N', $timestamp)获取星期几。然后,您可以检查这一天是否符合您的要求。

PSdate('N')是在 PHP 5.1.0 中引入的

于 2012-10-31T08:15:24.717 回答
0

仅基于您的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 />";
}

?>

输出

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-06')
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-07')
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-08')
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-09')
于 2012-10-31T08:24:54.343 回答