我被赋予了修复一些非常混乱的代码的任务,我们的一个客户是由一个狡猾的自由职业者写的......我不是非常热衷于重写整个事情,因为它一直在使用一段时间以来,它只是在他们要求另一个功能时才真正引起了问题。该程序的各种其他部分使用该数据库,该功能仅占整个系统的一小部分。
本质上,脚本的目的是管理虚拟办公室中的所有会议。 他们需要一个页面来显示“当前”会议。这是原始查询。
$CURRENT_TIME=date("Gi");
mysql_connect(localhost,$USERNAME,$PASSWORD);
@mysql_select_db($DATABASE) or die( "Unable to select database");
$query="SELECT * FROM ROOM_1 WHERE
EVENT_ROOM LIKE'%$URLROOMNAME%'
AND EVENT_YEAR='$CURRENT_YEAR'
AND EVENT_MONTH='$CURRENT_MONTH'
AND EVENT_DATE='$CURRENT_DATE'
AND START_TIME<='$CURRENT_TIME'
AND END_TIME>='$CURRENT_TIME' ";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
时间作为24小时值存储在int字段的mysql表中。例如,下午3:43被存储为1543。 新要求是会议能够设置安排时间。 自由职业者......“巧妙”的解决方案是在表格中添加另一个int字段并更改此行
AND START_TIME<='$CURRENT_TIME'
要..
AND (START_TIME-APPEAR_START_TIME)<='$CURRENT_TIME'
现在虽然它可能适用于某些会议,但它不适合其他人,例如,在1405开始的会议,设置允许时间为20分钟,这将导致1385 ...
所以我正在寻找一个聪明的解决方案,允许我单独留下其余部分,只需从查询中的$ START_TIME列中减去APPEAR_START_TIME字段,但需要几分钟。
有什么想法吗?
答案 0 :(得分:0)
如果我理解正确,你有两个“HHMM”形式的整数值,其中HH是小时,MM是分钟;并且您想要计算两个时间值之间的差异。
您可以使用value / 100
获得HH,使用value % 100
获得MM。然后,您可以分别计算小时和分钟的增量。
小时增量是(HH值delta +大概1小时由分钟增量引起,如果MM-start&lt; MM-appear-start):
(START_TIME / 100 - APPEAR_START_TIME / 100) + (START_TIME % 100 - APPEAR_START_TIME % 100) / 60
分钟delta是:
(START_TIME % 100 - APPEAR_START_TIME % 100) % 60
然后你可以连接delta的HH和MM部分:
HOURS_DELTA * 100 + MINUTES_DELTA
答案 1 :(得分:0)
首先,谢谢Kel:)
我认为这个更容易:
<(>((START_TIME / 100)* 60 +(START_TIME%100) - APPEAR_START_TIME)/ 60)* 100 +(((START_TIME / 100)* 60 +(START_TIME%100) - APPEAR_START_TIME)%60)