Строка даты PHP из ввода недели html

У меня есть файл php, в котором есть раскрывающийся список из 6 вариантов. Первые 4 параметра предварительно установлены 4 часа назад, 8 часов назад, 16 часов назад, 24 часа назад. Два других - выбрать диапазон и выбрать дату. Диапазон выбора создает 2 новых входа, которые являются входами даты html. Выбранная неделя, о которой я спрашиваю, создает ввод недели html. Как только пользователь выбирает все входные данные, он нажимает «Отправить» в форме. Раскрывающийся список - это поле выбора внутри поля формы. Это обновит страницу (файл php).

Первое, что делает php, - это получает входные данные из обновленного URL-адреса и сохраняет их в глобальных переменных. Первые 5 вариантов легко получить даты, но значения недели - год-W #. На этой неделе, например, 2020-W26. Есть ли strtotime, который легко преобразует это в строку даты в php?

<form action="" method ="get">
    <label for="timePeriod">Utilization Hours:</label>
    <div id="timeInputs" style="display: inline">
        <select name="timePeriod"  id="timePeriod" onchange="showDateInputs(value)">
            <option value="4">past 4 Hours</option>
            <option value="8">past 8 Hours</option>
            <option value="16">past 16 Hours</option>
            <option selected value="24" >past 24 Hours</option>
            <option value="1">select range</option>
            <option value="2">select week</option>
        </select>
    
    </div>
    <input type="submit" name="submit" value="Submit">

  <script type="text/javascript">
      document.getElementById('timePeriod').value = "<?php echo $_GET['timePeriod'];?>";
      
      var newDiv = document.createElement('div');
      newDiv.setAttribute("id", "newDiv");
      newDiv.setAttribute("style", "display: inline;");
      if (document.getElementById('timePeriod').value == 1){
            //alert("no way");
            newDiv.innerHTML = "Start Date <input type='date' name='start' id='start' value='<?php echo $_GET['start']; ?>' min='2018-01-02' max='<?php echo date('Y-m-d'); ?>'> End Date <input type='date' name='end' id='end' value='<?php echo $_GET['end']; ?>' min='2018-01-03' max='<?php echo date('Y-m-d'); ?>'>";
            document.getElementById('timeInputs').appendChild(newDiv);
      }
      else if (document.getElementById('timePeriod').value == 2){
            //alert("yes way");
            newDiv.innerHTML = "Select Week <input type='week' name='start' id='start' value='<?php echo $_GET['start']; ?>' ";
            document.getElementById('timeInputs').appendChild(newDiv);
      }
  </script> 
</form>

Выше в файле у меня есть этот php:

if( isset($_GET['submit']) )
{
    //$stDate = htmlentities($_GET['startDate']);
    //$enDate = htmlentities($_GET['endDate']);
    $timePer = htmlentities($_GET['timePeriod']);

Могу ли я бросить $ timePer в простой strtotime (что бы здесь ни происходило) - это мой вопрос.


person Byrge    schedule 26.06.2020    source источник
comment
$ _GET ['timePeriod'] должен быть действительным целым числом ›0. Это означает, что вы не должны использовать htmlentities. возможно использовать intval   -  person THE AMAZING    schedule 26.06.2020
comment
Не имеет отношения к этому исходному вопросу. Вы видите сценарий под формой, который обновляет и сохраняет вновь созданные блоки div, если форма отправлена. Этот код работает для Select Range и 2 вновь созданных входов даты, но для ввода недели. Если я нажму «Отправить», для формы отобразится значение по умолчанию. Вы знаете причину, почему / где искать?   -  person Byrge    schedule 26.06.2020


Ответы (1)


Думаю, это то, что вы ищете:

echo date("Y-m-d", strtotime("2020W26"));

используйте документацию по дате, чтобы отформатировать дату так, как вам нужно.

person THE AMAZING    schedule 26.06.2020
comment
Спасибо. Пропустил это в документации. Извините за беспокойство - person Byrge; 26.06.2020