如何计算日期范围内的特定日期和时间

麦克风

我有一个数据库,其中包含工作人员的登录和注销时间表。

我正在寻找哪些工作人员在周日凌晨6点至周四凌晨4点或周六6:30 am至周六下午3点之间进行计时。

我希望最终用户能够从Web界面(即1/1/14开始和12/1/14结束)中选择任何日期范围,并由此确定谁在白天和时间范围内工作。我希望能够显示工作人员列表以及他们的登录和注销时间。

到目前为止,我已经解决了如何使用“确定两个日期范围是否重叠”来检查用户是否已登录的方法

但是我对如何计算daterangeB的伪代码感到困惑

到目前为止,我有:

start at datefrom,
check if datefrom = dateto, if true end loop,
find out day name, 
check if saturday, if saturday add timestamps to array (start and finish),
increment datefrom by 1 day, start loop again.

这将为我提供用户选择的日期之间的星期六daterangeB的数组。

但是,较大的日期范围是个问题,因为第一天可能是星期二,如果我要检查星期天和星期四,比如说我找到星期四,我将没有星期天作为开始日,将需要在星期二00:00:00进行。同样可能发生相反的情况,我可以找到一个星期日,而用户选择的最后一天可能是一个星期一,因此我需要确定daterangeB的结束日期

start at datefrom,
check if datefrom = dateto, if true end loop,
find out day name, 
check if Sunday, if Sunday add timestamp to array (start),
increment datefrom by 1 day, start loop again.

start at datefrom,
check if datefrom = dateto, if true end loop,
find out day name, 
check if Thursday, if Thursday add timestamps to array (start and finish),
increment datefrom by 1 day, start loop again.
麦克风

因此,对于所有感兴趣的人来说,这是我最终所做的事情的一个愚蠢的版本:

$stcars = array();

// Create connection
try {
    $db = new PDO('mysql:host=localhost;dbname=Reports;charset=utf8', 'XXX', 'XXX');

    $db->query('hi'); //invalid query!
} catch(PDOException $ex) {
    echo "An Error occured!" . $ex->getMessage(); //user friendly message
}

    $stmt = $db->prepare('SELECT CarNumber FROM STcars WHERE CarNumber > 0');


    if ($stmt->execute()){

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

array_push($stcars, $row[CarNumber]);


}// end while

}// end if

$DateFrom = $_POST["DateFrom"];
$DateTo = $_POST["DateTo"];

$DateToArray = date('m/d/Y', strtotime($DateTo . ' + 1 day')); 


$period = new DatePeriod(
     new DateTime($DateFrom),
     new DateInterval('P1D'),
     new DateTime($DateToArray)
);

foreach($period as $date) 
{

    $daterange[] = $date->format('m/d/Y');

}

//  MS SQL Server with PDO_DBLIB
$DBH = new PDO("dblib:host=$myServer;dbname=$myDB", $myUser, $myPass);

for ($i = 0; $i < count($stcars); ++$i) {

$CarNumber = $stcars[$i];

$STH3 = $DBH->query("SELECT dbo.Driver.DriverNumber, dbo.Driver.DriverName, dbo.DriverLogon.LogonTime, dbo.DriverLogon.LogoffTime, dbo.Vehicle.RegistrationNumber, dbo.OwnerOperator.OOName FROM dbo.Driver INNER JOIN dbo.DriverLogon ON dbo.Driver.DriverID = dbo.DriverLogon.DriverID INNER JOIN dbo.Vehicle ON dbo.DriverLogon.VehicleID = dbo.Vehicle.VehicleID INNER JOIN dbo.OwnerOperator ON dbo.Vehicle.OperatorID = dbo.OwnerOperator.OwnerOperatorID WHERE dbo.Vehicle.CarNumber = '$CarNumber' AND dbo.DriverLogon.LogonTime >= '$DateFrom $Beginning' AND dbo.DriverLogon.LogoffTime <= '$DateTo $End' AND dbo.Driver.DriverNumber != '7777' AND dbo.Driver.DriverNumber != '83890';");

$STH3->setFetchMode(PDO::FETCH_OBJ);

while($row3 = $STH3->fetch()) {

$logonday = date("D", strtotime($row3->LogonTime));

$chkStartTime = strtotime($row3->LogonTime);
$chkEndTime   = strtotime($row3->LogoffTime);
$Tplate = $row3->RegistrationNumber;
$Operator = $row3->OOName;
$logontime = gmdate("D d/m/Y H:i:s", strtotime($row3->LogonTime));
$logofftime = gmdate("D d/m/Y H:i:s", strtotime($row3->LogoffTime));




for ($e = 0; $e < count($daterange); ++$e) {
       $Date = $daterange[$e];
$day = date("D", strtotime($Date)); 




if(strpos( $day, $Mon ) !== FALSE){


$startTime = strtotime($Date . " " . $Beginning);
$endTime   = strtotime($Date . " " . $End);



if($chkStartTime >= $endTime || $chkEndTime <= $startTime){}else
{   
echo "<tr>" ;
echo "<td>" . $day .  "</td> ";
echo "<td>" . $row3->DriverNumber .  "</td> ";
echo "<td>" . $row3->DriverName .  "</td> ";
echo "<td>" . $Operator .  "</td> ";
echo "<td>" . $CarNumber .  "</td> ";
echo "<td>" . $Tplate .  "</td> ";
echo "<td>" . $logontime   .  "</td> ";
echo "<td>" . $logofftime   .  "</td> ";
//echo "<td>" . "Logon after Time End or Logoff before Time Start" .  "</td> ";
//echo "<td>" . gmdate("D d/m/Y G:i:s", strtotime($Date . " " . $Beginning))   . "</td> ";
//echo "<td>" . gmdate("D d/m/Y G:i:s", strtotime($Date . " " . $End))   .  "</td> ";
 echo "</tr>" ;

$list1 ="$day, $row3->DriverNumber, $row3->DriverName, $Operator, $CarNumber, $Tplate, $logontime, $logofftime " . "\n";

fwrite($handle, $list1);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java API在Elasticsearch中搜索特定日期和时间范围内的日志

来自分类Dev

从由日期行组成的表中,如何计算日期在特定日期范围内的行数

来自分类Dev

如何在自定义Excel日历中的特定日期和时间范围内进行特定活动

来自分类Dev

如何在特定日期的特定时间范围内显示不同的消息

来自分类Dev

如何制作一个范围内特定日期时间数据的临时表?

来自分类Dev

如何检索特定日期范围内的数据?

来自分类Dev

选择日期范围内的特定日期

来自分类Dev

使用JavaScript获取日期范围内的特定日期

来自分类Dev

Spark SQL-如何对链接到特定日期的日期范围内的值求和

来自分类Dev

在特定日期和时间范围内销售特定的 Woocommerce 商品

来自分类Dev

获取特定日期范围内的结果

来自分类Dev

在特定日期范围内合并Pandas DataFrame

来自分类Dev

无法获取在特定日期范围内创建的工件

来自分类Dev

如何计算和显示特定日期?

来自分类Dev

如何获得给定日期范围内的天数

来自分类Dev

如何在 SQL Server 中查询特定日期范围内的数据

来自分类Dev

给定日期时间范围内的随机日期时间

来自分类Dev

给定日期时间范围内的随机日期时间

来自分类Dev

验证我的节点的开始日期或结束日期是否在特定日期范围内

来自分类Dev

大熊猫-在特定日期范围内划分日期范围

来自分类Dev

获取给定日期范围内的月份的开始日期和结束日期

来自分类Dev

记录最少日期的记录并计算特定时间范围内的后续记录

来自分类Dev

Java:检查当前日期是否在特定日期范围内

来自分类Dev

日期之间的JavaScript过滤以获取特定日期范围内的记录

来自分类Dev

Java:检查当前日期是否在特定日期范围内

来自分类Dev

使用文件名日期的特定日期范围内的Linux tar文件

来自分类Dev

R-检查字符串是否包含特定日期范围内的日期

来自分类Dev

Java:检查当前日期是否在特定日期范围内

来自分类Dev

从特定日期时间范围获取数据

Related 相关文章

  1. 1

    如何使用Java API在Elasticsearch中搜索特定日期和时间范围内的日志

  2. 2

    从由日期行组成的表中,如何计算日期在特定日期范围内的行数

  3. 3

    如何在自定义Excel日历中的特定日期和时间范围内进行特定活动

  4. 4

    如何在特定日期的特定时间范围内显示不同的消息

  5. 5

    如何制作一个范围内特定日期时间数据的临时表?

  6. 6

    如何检索特定日期范围内的数据?

  7. 7

    选择日期范围内的特定日期

  8. 8

    使用JavaScript获取日期范围内的特定日期

  9. 9

    Spark SQL-如何对链接到特定日期的日期范围内的值求和

  10. 10

    在特定日期和时间范围内销售特定的 Woocommerce 商品

  11. 11

    获取特定日期范围内的结果

  12. 12

    在特定日期范围内合并Pandas DataFrame

  13. 13

    无法获取在特定日期范围内创建的工件

  14. 14

    如何计算和显示特定日期?

  15. 15

    如何获得给定日期范围内的天数

  16. 16

    如何在 SQL Server 中查询特定日期范围内的数据

  17. 17

    给定日期时间范围内的随机日期时间

  18. 18

    给定日期时间范围内的随机日期时间

  19. 19

    验证我的节点的开始日期或结束日期是否在特定日期范围内

  20. 20

    大熊猫-在特定日期范围内划分日期范围

  21. 21

    获取给定日期范围内的月份的开始日期和结束日期

  22. 22

    记录最少日期的记录并计算特定时间范围内的后续记录

  23. 23

    Java:检查当前日期是否在特定日期范围内

  24. 24

    日期之间的JavaScript过滤以获取特定日期范围内的记录

  25. 25

    Java:检查当前日期是否在特定日期范围内

  26. 26

    使用文件名日期的特定日期范围内的Linux tar文件

  27. 27

    R-检查字符串是否包含特定日期范围内的日期

  28. 28

    Java:检查当前日期是否在特定日期范围内

  29. 29

    从特定日期时间范围获取数据

热门标签

归档