PHP获取今天和昨天的日期

时间:2020-09-04 04:35:45

标签: php

enter image description here

可能数据> 3如果有更改/更新。

如何设置放置日期(昨天/今天)的逻辑, 签入时(当前)我发送了2个参数

示例我出现在2020-09-04 01:24。 日期上有1个数据班次必须不同

我想用这样的日期设置班次。

时间:2020-09-03 22:00

超时时间:2020-09-04 02:00

这是我的代码

<?php
$date = '2020-09-03';
$time = '01:50';

$arr = [];
$data_1 = array(
    'time_in' =>'04:00',
    'time_out'=>'10:00');
$data_2 = array(
    'time_in' =>'12:00',
    'time_out'=>'21:00');
$data_3 = array(
    'time_in' =>'22:00',
    'time_out'=>'02:00');
$arr[] = $data_1;
$arr[] = $data_2;
$arr[] = $data_3;

$new_data = [];
foreach($arr as $v){
    $time_in  = $v['time_in'];
    $time_out = $v['time_out'];
    
    $push_with_date = array(
    'time_in' =>$time_in,
    'time_out'=>$time_out);
        
    $new_data[] = $push_with_date; // i want push time with date
}

echo "<pre>";
print_r($new_data);
echo "</pre>";
?>

帮我谢谢

1 个答案:

答案 0 :(得分:1)

我为您编写了代码。 请检查逻辑。

function changeHour($time) {
  $times = explode(":", $time);
  return (count($times) > 1) ? intval($times[0]) * 60 + intval($times[1]) : intval($times[0]) * 60;
}

function is_yesterday($time1, $time2) {
  if (changeHour($time1) <= changeHour($time2)) {
    return false;
  }

  return true;
}

$date = '2020-09-03';
$time = '01:50';

$ydate = date("Y-m-d",strtotime($date) - 86400);



$arr = [];
$data_1 = array(
    'time_in' =>'04:00',
    'time_out'=>'10:00');
$data_2 = array(
    'time_in' =>'12:00',
    'time_out'=>'21:00');
$data_3 = array(
    'time_in' =>'22:00',
    'time_out'=>'02:00');
$arr[] = $data_1;
$arr[] = $data_2;
$arr[] = $data_3;

$new_data = [];
foreach($arr as $v){
    $time_in  = $v['time_in'];
    $time_out = $v['time_out'];
    
    if (is_yesterday($time, $time_out)) {

      $time_in = "$ydate $time_in";
      $time_out = "$ydate $time_out";
      
    } else {
      
      if (is_yesterday($time_in, $time_out)) {
        $time_in = "$ydate $time_in";
      } else {
        $time_in = "$date $time_in";
      }
      
      $time_out = "$date $time_out";      
    }
    $push_with_date = array(
    'time_in' =>$time_in,
    'time_out'=>$time_out);
        
    $new_data[] = $push_with_date; // i want push time with date
}

echo "<pre>";
print_r($new_data);
echo "</pre>";