PHP 如何计算 2 个数组会话日期之间的天数?
PHP how to calculate days between 2 array session dates?
很抱歉这个问题太长了。我只是想确保这个问题得到完全解决:
所以通过一个 html 表格,我要求用户五次提供四个信息:deliveryby、itemNo、inputTime、inputTime2。
每个信息都存储在一个会话数组中。
将显示所有这 5 个项目,对于每个项目,用户可以单击 'retrieve' 按钮或 'delete' 按钮。
所以对于这 5 个项目中的每一个,我都需要一个函数来跟踪每个 inputTime2 和 inputTime 之间的天数。
如果天数超过 2 天,可以单击 'delete' 按钮,该项目将从会话中清除。
但如果少于 2 天,可以单击 'retrieve' 按钮,该项目也会从会话中清除。
检索和删除按钮都会从会话中删除项目。
唯一的区别是两个按钮需要扫描一天的持续时间。
Box-function.php :日期函数所在的位置。此页面附加到 'delete' 按钮。我不确定我这样做是否正确。
<?php
session_start();
$x = $_GET['id'];
//echo $x;
$date1 = array();
$date2 = array();
$datediff = array();
$days = array();
//to assign the session date array and find out how many days are between the two dates
for($x=0; $x<5; $x++){
$date1 = [strtotime($_SESSION['InputTime'][$x])][$x];
$date2 = [strtotime($_SESSION['InputTime2'][$x])][$x];
$datediff = [$date2 - $date1][$x];
$days = [round($datediff / (60*60*24))][$x];
}
for($x=0; $x<5; $x++){
if ($days[$x] == 2 && $days[$x] > 2){
//if( date("Y-m-d", strtotime("+2 day", strtotime($_SESSION['InputTime'][$x])))){
$_SESSION['DeliveryBy'][$x] = '';
$_SESSION['ItemNo'][$x] = '';
$_SESSION['InputTime'][$x] = '';
header('Location: User-display1.php');
}
}
?>>
用户-display1.php:
for($x=0; $x<5; $x++) {
if($_SESSION['DeliveryBy'][$x]!=""){
echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo $_SESSION['DeliveryBy'][$x]; echo "</td>";
echo "<td>"; echo $_SESSION['InputTime'][$x]; echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
<?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";
echo "</tr>";
}
else{
echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo ' '; echo "</td>";
echo "<td>"; echo ' '; echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
<?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";
echo "</tr>";
}
}
clear-session.php :此页面应该清除天数差异小于 2 天的项目的会话变量,但我不确定该怎么做,因为我仍然遇到问题方框-function.php 页.
<?php
session_start();
$x = $_GET['id'];
//echo $x;
$_SESSION['DeliveryBy'][$x] = '';
$_SESSION['ItemNo'][$x] = '';
$_SESSION['InputTime'][$x] = '';
header('Location: User-display1.php');
?>
代码显示没有错误。但我不能点击删除按钮。单击按钮时没有任何变化。我认为这段代码的逻辑可能有一些错误。谁能告诉我应该怎么做?
好吧,你并没有真正指定日期的格式。但我确实看到了:
strtotime($_SESSION['InputTime'][$x])
所以我假设它至少是 PHP 理解的东西。知道这一点,你可以使用这样的东西:
<?php
$old_o = new DateTime('2019-12-31');
$new_o = new DateTime;
echo $new_o->diff($old_o)->days, "\n";
很抱歉这个问题太长了。我只是想确保这个问题得到完全解决:
所以通过一个 html 表格,我要求用户五次提供四个信息:deliveryby、itemNo、inputTime、inputTime2。
每个信息都存储在一个会话数组中。
将显示所有这 5 个项目,对于每个项目,用户可以单击 'retrieve' 按钮或 'delete' 按钮。
所以对于这 5 个项目中的每一个,我都需要一个函数来跟踪每个 inputTime2 和 inputTime 之间的天数。
如果天数超过 2 天,可以单击 'delete' 按钮,该项目将从会话中清除。
但如果少于 2 天,可以单击 'retrieve' 按钮,该项目也会从会话中清除。
检索和删除按钮都会从会话中删除项目。
唯一的区别是两个按钮需要扫描一天的持续时间。
Box-function.php :日期函数所在的位置。此页面附加到 'delete' 按钮。我不确定我这样做是否正确。
<?php
session_start();
$x = $_GET['id'];
//echo $x;
$date1 = array();
$date2 = array();
$datediff = array();
$days = array();
//to assign the session date array and find out how many days are between the two dates
for($x=0; $x<5; $x++){
$date1 = [strtotime($_SESSION['InputTime'][$x])][$x];
$date2 = [strtotime($_SESSION['InputTime2'][$x])][$x];
$datediff = [$date2 - $date1][$x];
$days = [round($datediff / (60*60*24))][$x];
}
for($x=0; $x<5; $x++){
if ($days[$x] == 2 && $days[$x] > 2){
//if( date("Y-m-d", strtotime("+2 day", strtotime($_SESSION['InputTime'][$x])))){
$_SESSION['DeliveryBy'][$x] = '';
$_SESSION['ItemNo'][$x] = '';
$_SESSION['InputTime'][$x] = '';
header('Location: User-display1.php');
}
}
?>>
用户-display1.php:
for($x=0; $x<5; $x++) {
if($_SESSION['DeliveryBy'][$x]!=""){
echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo $_SESSION['DeliveryBy'][$x]; echo "</td>";
echo "<td>"; echo $_SESSION['InputTime'][$x]; echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
<?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";
echo "</tr>";
}
else{
echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo ' '; echo "</td>";
echo "<td>"; echo ' '; echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
<?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";
echo "</tr>";
}
}
clear-session.php :此页面应该清除天数差异小于 2 天的项目的会话变量,但我不确定该怎么做,因为我仍然遇到问题方框-function.php 页.
<?php
session_start();
$x = $_GET['id'];
//echo $x;
$_SESSION['DeliveryBy'][$x] = '';
$_SESSION['ItemNo'][$x] = '';
$_SESSION['InputTime'][$x] = '';
header('Location: User-display1.php');
?>
代码显示没有错误。但我不能点击删除按钮。单击按钮时没有任何变化。我认为这段代码的逻辑可能有一些错误。谁能告诉我应该怎么做?
好吧,你并没有真正指定日期的格式。但我确实看到了:
strtotime($_SESSION['InputTime'][$x])
所以我假设它至少是 PHP 理解的东西。知道这一点,你可以使用这样的东西:
<?php
$old_o = new DateTime('2019-12-31');
$new_o = new DateTime;
echo $new_o->diff($old_o)->days, "\n";