我想知道是否可以在24小时内减去一个字符串?
<?php
if($_POST[startTime] - $_POST[endTime] == 0)
echo 'PLEASE ADJUST YOUR START TIME OR END TIME';
?>
<div class="form-group">
<label class="col-lg-3 control-label" for="inputBday">End Time </label>
<div class="col-lg-9">
<select class="form-control" id="endTime" required>
<option value="">Select End Time</option>
<option value="00:00">12 MN</option>
<option value="01:00">1:00 AM</option>
<option value="02:00">2:00 AM</option>
<!-- and so on .... -->
<option value="11:00">11:00 AM</option>
<option value="12:00">12:00 NN</option>
<option value="13:00">1:00 PM</option>
<option value="14:00">2:00 PM</option>
<!-- and so on ... -->
<option value="22:00">10:00 PM</option>
<option value="23:00">11:00 PM</option>
</select>
</div>
</div>
这是我知道如何让用户选择时间的唯一方式。我已经尝试过使用互联网上可用的某些类,但是我不能两次使用该代码(一个用于结束,一个用于开始时间)。我尝试测试上面的第一个代码,减去字符串,它总是返回零。我认为系统只是减去了字符数。 (我不确定)。
另外,我尝试将每个选项值更改为正常数字,例如来自&#34; 01:00&#34;到&#34; 1&#34;,它会返回Parse error: syntax error, unexpected 'die'
。 (我在调试中使用die,比如使用die打印值)。我甚至尝试删除引号,以便我认为它将转换为int。返回我同样的错误。
答案 0 :(得分:1)
您需要使用strtotime
转换字符串时间 - 然后计算两者之间的差异:
$startTime = strtotime($_POST['startTime']);
$endTime = strtotime($_POST['endTime']);
if($endTime - $startTime <= 0) {
// end time selected is before or the same as start time
}
你得到的差异将在几秒钟内完成。
当然,您需要为其添加错误检查。如果您收到abcd
和xyz
作为开始和结束时间字符串会怎样?
答案 1 :(得分:1)
如果您永远不需要处理部分时间,例如03:45
和仅完整时间,那么为什么不将您的表单修改为仅发送小时值?
<option value="0"> 12:00am
<option value="1"> 1:00am
...
<option value="15"> 3pm
...
然后减法变得微不足道。