2014-10-27 65 views
0

我想知道是否可以减去一个字符串24小时的时间?减去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>   

这是我知道如何让用户选择时间的唯一方法。我已经尝试使用某些准备好使用互联网上可用的类,但是我不能使用代码两次(一个用于结束,一个用于开始时间)。我试着测试上面的第一个代码,减去字符串,它总是返回给我零。我认为系统只是减去字符的数量。 (虽然我不确定)。

此外,我试图将每个选项值更改为正常的数字,如从“01:00”到“1”,它返回我Parse error: syntax error, unexpected 'die'。 (我在调试中使用die,就像使用die打印值一样)。我甚至尝试删除引号,以便我认为它将被转换为int。返回同样的错误。

回答

1

如果您从不需要处理部分时间,例如03:45只有整个小时,那么为什么不修改你的表格只发送小时值?

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

然后减法变得微不足道。

+0

相同,它返回给我这个:无法运行查询:SQLSTATE [23000]:完整性约束违规:1048 Le champ'startTime'ne peutêtrevide(null):( – 2014-10-27 17:20:07

+0

因为你没有在你的问题中提及数据库,在那里没有什么惊喜 – 2014-10-27 17:21:01

+0

我的数据库很好,我想。因为当开始时间和结束时间字段只是纯文本(而不是下拉列表)时,它不会返回相同的结果问题:没有任何错误/在我的代码中的警告在下拉列表中? – 2014-10-27 17:27:58

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作为您的开始和结束时间字符串,会怎么样?

+0

好的等待。第一:$ _POST [startTime]和$ _POST ['startTime']之间的区别是什么?我不包括单引号总是在我的项目中完成99%。告诉我可以不包括单引号吗? – 2014-10-27 17:05:03

+0

@GlennVon单引号或双引号 - 无所谓 - 但你应该包括它们。没有引号,你会看到关于未知常量的警告(如果你打开你的错误显示)。它现在可能对你有用的事实是无关紧要的。 – 2014-10-27 17:07:06

+0

它适用于我(不放单引号),所以我现在不介意它。不管怎么说,我做对了吗?我的代码是这样的:将被转换为时间?或者我应该使用