日期到日期转换器
Date to Day Converter
我看到其他问题询问如何将日期硬编码到代码中,将日期解析为星期几,但是我如何从发布到自身的表单中执行相同的操作?基本上有两个下拉列表(一个用于月份,一个用于日期)和一个用于输入年份的字段。我不知道如何将这三个字段放入一个 $date 中,然后使用 echo date('l', strtotime($date));
来显示它。
<?php
session_start();
if(!isset($_SESSION['month'])){
$_SESSION['month']= 01;
}
$month = $_SESSION['month'];
if(isset($_POST['month'])){
$month = $_POST['month'];
}
if(!isset($_SESSION['day'])){
$_SESSION['day']= 01;
}
$day = $_SESSION['day'];
if(isset($_POST['day'])){
$day = $_POST['day'];
}
if(!isset($_SESSION['year'])){
$_SESSION['year']= 0000;
}
$year = $_SESSION['year'];
if(isset($_POST['year'])){
$year = $_POST['year'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = 'month'.'/'.'day'.'/'.'year';
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = $month.$day.$year;
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
echo date('l', strtotime($date));
session_destroy();
?>
我的表格在这里:
<body>
<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="POST">
<fieldset>
<legend>Date to Day Converter</legend>
Month:<br>
<select name="month">
<option value=01>January</option>
<option value=02>February</option>
<option value=03>March</option>
<option value=04>April</option>
<option value=05>May</option>
<option value=06>June</option>
<option value=07>July</option>
<option value=08>August</option>
<option value=09>September</option>
<option value=10>October</option>
<option value=11>November</option>
<option value=12>December</option>
</select>
<br>
Day:<br>
<select name="day">
<option value=01>01</option>
<option value=02>02</option>
<option value=03>03</option>
<option value=04>04</option>
<option value=05>05</option>
<option value=06>06</option>
<option value=07>07</option>
<option value=08>08</option>
<option value=09>09</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<br>
Year:<br>
<input type="text" name"year">
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
首先,您的 HTML 中存在错误。您在以下代码行中缺少 =
:
<input type="text" name"year">
这意味着您的年份将永远不会被提交并默认为 0;
其次,看看你的这部分代码:
if(!isset($_SESION['date'])){
$_SESSION['date'] = 'month'.'/'.'day'.'/'.'year';
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = $month.$day.$year;
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
在您的第一个 if
中,您将会话日期设置为 'month/day/year'。你没有 post 任何 'date' 变量,所以第二个 if
不会被执行。第三个 if
也不会执行,因为您只是在会话中设置了 date
变量。第四个 if
只是第二个的副本,出于同样的原因仍然不会执行。
最后你的 $date 将包含 'month/day/year',php 无法解析,所以它默认为 unix 纪元,恰好是星期三。
您应该将我上面引用的整个代码块更改为如下内容:
$date = $month.'/'.$day.'/'.$year;
$_SESSION['date'] = $date;
现在您的脚本应该可以正常工作了
我看到其他问题询问如何将日期硬编码到代码中,将日期解析为星期几,但是我如何从发布到自身的表单中执行相同的操作?基本上有两个下拉列表(一个用于月份,一个用于日期)和一个用于输入年份的字段。我不知道如何将这三个字段放入一个 $date 中,然后使用 echo date('l', strtotime($date));
来显示它。
<?php
session_start();
if(!isset($_SESSION['month'])){
$_SESSION['month']= 01;
}
$month = $_SESSION['month'];
if(isset($_POST['month'])){
$month = $_POST['month'];
}
if(!isset($_SESSION['day'])){
$_SESSION['day']= 01;
}
$day = $_SESSION['day'];
if(isset($_POST['day'])){
$day = $_POST['day'];
}
if(!isset($_SESSION['year'])){
$_SESSION['year']= 0000;
}
$year = $_SESSION['year'];
if(isset($_POST['year'])){
$year = $_POST['year'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = 'month'.'/'.'day'.'/'.'year';
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = $month.$day.$year;
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
echo date('l', strtotime($date));
session_destroy();
?>
我的表格在这里:
<body>
<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="POST">
<fieldset>
<legend>Date to Day Converter</legend>
Month:<br>
<select name="month">
<option value=01>January</option>
<option value=02>February</option>
<option value=03>March</option>
<option value=04>April</option>
<option value=05>May</option>
<option value=06>June</option>
<option value=07>July</option>
<option value=08>August</option>
<option value=09>September</option>
<option value=10>October</option>
<option value=11>November</option>
<option value=12>December</option>
</select>
<br>
Day:<br>
<select name="day">
<option value=01>01</option>
<option value=02>02</option>
<option value=03>03</option>
<option value=04>04</option>
<option value=05>05</option>
<option value=06>06</option>
<option value=07>07</option>
<option value=08>08</option>
<option value=09>09</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<br>
Year:<br>
<input type="text" name"year">
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
首先,您的 HTML 中存在错误。您在以下代码行中缺少 =
:
<input type="text" name"year">
这意味着您的年份将永远不会被提交并默认为 0;
其次,看看你的这部分代码:
if(!isset($_SESION['date'])){
$_SESSION['date'] = 'month'.'/'.'day'.'/'.'year';
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
if(!isset($_SESION['date'])){
$_SESSION['date'] = $month.$day.$year;
}
$date = $_SESSION['date'];
if(isset($_POST['date'])){
$date= $_POST['date'];
}
在您的第一个 if
中,您将会话日期设置为 'month/day/year'。你没有 post 任何 'date' 变量,所以第二个 if
不会被执行。第三个 if
也不会执行,因为您只是在会话中设置了 date
变量。第四个 if
只是第二个的副本,出于同样的原因仍然不会执行。
最后你的 $date 将包含 'month/day/year',php 无法解析,所以它默认为 unix 纪元,恰好是星期三。
您应该将我上面引用的整个代码块更改为如下内容:
$date = $month.'/'.$day.'/'.$year;
$_SESSION['date'] = $date;
现在您的脚本应该可以正常工作了