【问题标题】:Dynamically update date for days PHPPHP 动态更新日期
【发布时间】:2018-08-14 09:08:52
【问题描述】:

我有一个 HTML 表格,表格的一侧写有日期。 它还有一些随机数据。

<?php
date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y');
?>

<h2>HTML Table</h2>

<table>
  <tr>
    <th id="1">Day</th>
    <th id="2">Date</th>
    <th>Game</th>
  </tr>
  <tr>
    <td>Monday</td>
    <td>DATE OF MONDAY HERE</td>
    <td>Golf</td>
  </tr>
  <tr>
    <td>Tuesday</td>
    <td>DATE OF TUESDAY</td>
    <td>Swimming</td>
  </tr>
  <tr>
    <td>Wednesday</td>
    <td>DATE OF WEDNESDAY</td>
    <td>Tennis</td>
  </tr>
  <tr>
    <td>Thursday</td>
    <td>DATE THURSDAY</td>
    <td>Hockey</td>
  </tr>
  <tr>
    <td>Friday</td>
    <td>DATE FRIDAY</td>
    <td>Rugby</td>
  </tr>
  <tr>
    <td>Saturday</td>
    <td>DATE OF SATURDAY</td>
    <td>Football</td>
  </tr>
  <tr>
    <td>Sunday</td>
    <td>DATE OF SUNDAY</td>
    <td>Basketball</td>
  </tr>
</table>

现在我需要的是,我可以将当​​前日期的值存储在 $date 中,但是我如何使用它来根据日期每天更改,即日期应该根据天。

<!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>

    <h2>HTML Table</h2>

    <table>
      <tr>
        <th id="1">Day</th>
        <th id="1">Date</th>
        <th>Game</th>
      </tr>
      <tr>
        <td>Monday</td>
        <td>20-08-2018</td> <!-- coming monday's date-->
        <td>Golf</td>
      </tr>
      <tr>
        <td>Tuesday</td>
        <td>14-08-2018</td> <!-- today's date-->
        <td>Swimming</td>
      </tr>
      <tr>
        <td>Wednesday</td>
        <td>15-08-2018</td>
        <td>Tennis</td>
      </tr>
      <tr>
        <td>Thursday</td>
        <td>16-08-2018</td>
        <td>Hockey</td>
      </tr>
      <tr>
        <td>Friday</td>
        <td>17-08-2018</td>
        <td>Rugby</td>
      </tr>
      <tr>
        <td>Saturday</td>
        <td>18-08-2018</td>
        <td>Football</td>
      </tr>
      <tr>
        <td>Sunday</td>
        <td>19-08-2018</td>
        <td>Basketball</td>
      </tr>
    </table>

    </body>
    </html>

我是 php 的新手,也在寻找一些堆栈溢出的解决方案,有一个关于如何从日期名称中提取日期的解决方案,但我认为这件事与那个完全不同,如果我是,请纠正我某处错了。

【问题讨论】:

标签: php html date


【解决方案1】:

您可以使用此代码每天动态更新内容:

<!DOCTYPE html>
                    <html>
                    <head>
                    </head>
                    <body>

                    <h2>HTML Table</h2>

                    <table>
                    <tr id="1">
                    <th >Day</th>
                    <th >Date</th>
                    <th>Game</th>
                    </tr>
                    <?php
                    $array=array('Monday'=>'Golf','Tuesday'=>'Swimming','Wednesday'=>'Tennis','Thursday'=>'Hockey','Friday'=>'Rugby','Saturday'=>'Football','Sunday'=>'Basketball');
                    $start=date_create();
                    $end=clone($start);
                    $end->add(date_interval_create_from_date_string('7 days'));
                    $period = new DatePeriod($start,date_interval_create_from_date_string('1 days'), $end);
                    foreach($period as $k=> $date){
                            ?>
                            <tr>
                            <td><?php echo $date->format("l");?></td>
                            <?php if($k===0):?> 
                                <td class="today" style="background:green;"><?php echo $date->format("d-m-Y");?></td> 
                            <?php else:?>
                                <td class="followingday" style="background:gray;"><?php echo $date->format("d-m-Y");?></td> 
                            <?php endif;?>
                            <td><?php echo $array[$date->format("l")];?></td>
                          </tr>
                            <?php

                    }
                    ?>
                    </table>

                    </body>
                    </html>

上面的代码打印从当前日期开始的日期,但您可以使用下面的代码保持从星期一开始的日期:

<!DOCTYPE html>
                    <html>
                    <head>
                    </head>
                    <body>

                    <h2>HTML Table</h2>

                    <table>
                    <tr id="1">
                    <th >Day</th>
                    <th >Date</th>
                    <th>Game</th>
                    </tr>
                    <?php
                    $array=array('Monday'=>'Golf','Tuesday'=>'Swimming','Wednesday'=>'Tennis','Thursday'=>'Hockey','Friday'=>'Rugby','Saturday'=>'Football','Sunday'=>'Basketball');
                    $start=date_create();
                    $end=clone($start);
                    $end->add(date_interval_create_from_date_string('7 days'));
                    $period = new DatePeriod($start,date_interval_create_from_date_string('1 days'), $end);

                    foreach($period as $key=>$date){
                        $date_period[$date->format('l')]=$date;
                    }
                    unset($period);
                    foreach($array as $day=>$sport){
                        ?>
                            <tr>
                            <td><?php echo $day;?></td>
                            <?php if($day===$start->format('l')):?> 
                                <td class="today" style="background:green;"><?php echo $date_period[$day]->format("d-m-Y");?></td> 
                            <?php else:?>
                                <td class="followingday" style="background:gray;"><?php echo  $date_period[$day]->format("d-m-Y");?></td> 
                            <?php endif;?>
                            <td><?php echo $sport;?></td>
                          </tr>
                            <?php

                    }
                    ?>
                    </table>

                    </body>
                    </html>

【讨论】:

    【解决方案2】:

    你可以这样拿着:

    $next_date = date('Y-m-d', strtotime($date .' +1 day'));
    

    或使用 for 循环 提前 x 天生成:

    $next_date = date('Y-m-d', strtotime($date .' +$i day'));

    【讨论】:

    • 但是该日期将如何打印在该 html 标记中,前提是它应该根据日期每天更新
    • 回显 $date;对于页面的特定部分,您希望显示该值。每次进入页面,php脚本都会多生成一次$date
    • 嗨,解析$i需要双引号$next_date = date('Y-m-d', strtotime($date ." +{$i} day"));
    【解决方案3】:
    <?php
    
        $week_days=['Monday'=>7,'Tuesday'=>1,'Wednesday'=>2,'Thursday'=>3,'Friday'=>4,'Saturday'=>5,'Sunday'=>6];
        $current_day=date('l');
        $current_date=date('Y-m-d');
        $days_to_munus=0;
        switch ($current_day) {
            case 'Monday':
                $days_to_munus=0;
                break;
            case 'Tuesday':
                $days_to_munus=1;
                break;
            case 'Wednesday':
                $days_to_munus=2;
                break;
            case 'Thursday':
                $days_to_munus=3;
                break;
            case 'Friday':
                $days_to_munus=4;
                break;
            case 'Saturday':
                $days_to_munus=5;
                break;
            case 'Sunday':
                $days_to_munus=6;
                break;      
            default:
                $days_to_munus=0;
                break;
        }
    
    ?>
        <table>
          <tr>
            <th id="1">Day</th>
            <th id="1">Date</th>
            <th>Game</th>
          </tr>
    <?php
    
        foreach ($week_days as $key => $value) {
            $minus_days=$value-$days_to_munus;
            echo "<tr>";
            echo "<td>$key</td>";
            echo "<td>".date('d-m-Y', strtotime($current_date ." $minus_days day"))."</td>";
            echo "<td>game_name</td>";
            echo "</tr>";
        }
    
    ?>
    
    </table>
    

    试试这个,希望这段代码能解决你的问题

    【讨论】:

      【解决方案4】:

      更简单的方法:

      <?php
      
      $dow = date('l');
      $game = array(
          'Monday'    => 'Golf',
          'Tuesday'   => 'Swimming',
          'Wednesday' => 'Tennis',
          'Thursday'  => 'Hockey',
          'Friday'    => 'Rugby',
          'Saturday'  => 'Football',
          'Sunday'    =>  'Basketball'
      );
      
      echo "
      <h2>HTML Table</h2>
      
      <table>
      <tr>
          <th id='1' class='1'>Day</th>
          <th id='2' class='1'>Date</th>
          <th>Game</th>
      </tr>
      ";
      for ( $i = 0; $i < count($week); $i++ ) {
          $ctr_dow = date('l',strtotime("$i days"));
      
          echo "
          <tr>
              <th>" . $ctr_dow . "</th>
              <th>" .  date('m-d-Y',strtotime("$i days")) . "</th>
              <th>" . $game[$ctr_dow] . "</th>
          </tr>";
      
      }
      
      echo "
      </table>
      ";
      ?>
      

      另外,希望您不要介意我更改表头的 id 标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多