减去24小时的时间字符串

时间:2014-10-27 16:55:01

标签: php

我想知道是否可以在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。返回我同样的错误。

2 个答案:

答案 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
}

你得到的差异将在几秒钟内完成。

当然,您需要为其添加错误检查。如果您收到abcdxyz作为开始和结束时间字符串会怎样?

答案 1 :(得分:1)

如果您永远不需要处理部分时间,例如03:45完整时间,那么为什么不将您的表单修改为仅发送小时值?

<option value="0"> 12:00am
<option value="1"> 1:00am
...
<option value="15"> 3pm
...

然后减法变得微不足道。