Я новичок в программировании, поэтому извиняюсь за свой довольно простой вопрос.

Я использую плагин Week-Picker-Bootstrap-4. Я разрешаю открыть каллендер и выбрать неделю. Bootstrap-weekpicker.min.js создает форму ввода html со следующим выводом после выбора даты Week 41, 2021. Для меня это нормально, но мне нужно, чтобы это значение было отправлено на мой сервер с помощью сообщения. Но теперь он опубликует Week 41, 2021. Есть ли способ сохранить значение Week 41, 2021, которое может видеть пользователь, но опубликовать исходную выбранную дату в этом формате format :'yyyy-mm-dd' в качестве значения на моем сервере? Не могу найти ответа, как это сделать.

              <div class="row">            
    <div class="col-xs-12 col-md-12">Week / Year</div>
    <div class="col-xs-12 col-md-12">
<div class="col-auto">
<div class="input-group date align-items-center">
                   
          <div class="input-group date align-items-center">
                 <div id="planning_weekpick"></div>
   </div></div>
    </div></div>
   
      </div>
//Bootstrap css and jquery are inlcuded to.
<link rel="stylesheet" href="https://cdn.rawgit.com/pingcheng/bootstrap4-datetimepicker/master/build/css/bootstrap-datetimepicker.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js" type="text/javascript"></script>
      <script src="https://cdn.rawgit.com/pingcheng/bootstrap4-datetimepicker/master/build/js/bootstrap-datetimepicker.min.js" type="text/javascript" ></script>
      <script src="../js/bootstrap-weekpicker.min.js" type="text/javascript" ></script>
          <script type="text/javascript">
          $(function () {

  $('#planning_weekpick').weekpicker();

});

       
    </script>     
0
Martin4523 9 Окт 2021 в 21:15

2 ответа

Лучший ответ

Я думаю, вы можете это сделать с помощью этого решения . Это функция setISODate.

$date = new DateTime();
$date->setISODate($year, $weekNumber);
echo $date->format('Y.m.d');

Есть несколько методов для извлечения номера года и недели из строки Week 41, 2021.

Например:

$dateString = 'Week 41, 2021';
$parts = explode(' ', $dateString);
$weekNumber = (int) rtrim($parts[1], ',');
$year = (int) $parts[2];
0
shanginn 9 Окт 2021 в 20:02

Благодаря предложению кода и документа @shanginn. Я смог создать следующий код, чтобы получить то, что мне нужно! Большое спасибо !

$dateString = $planning_week;
$parts = explode(' ', $dateString);
$weekNumber = (int) rtrim($parts[1], ',');
$year = (int) $parts[2];
$weekyear = $weekNumber. '-' . $year;

$date = new DateTime();
$date->setISODate($year, $weekNumber);
$createddate = $date->format('Y-m-d');
$dateplanning = new DateTime($createddate);
$monthnumber = $dateplanning->format("m");
$yearandmonth = $year . '-' . $monthnumber;

function normalizeMonth($monthnumber) {
    switch($monthnumber) {
        case "01": return "Januari";
        case "02": return "Februari";
        case "03": return "Maart";
        case "04": return "April";
        case "05": return "Mei";
        case "06": return "Juni";
        case "07": return "Juli";
        case "08": return "Augustus";
        case "09": return "September";
        case "10": return "Oktober";
        case "11": return "November";
        case "12": return "December";
        
    }
    
    return $monthnumber;
}
$month = normalizeMonth($monthnumber);
0
Martin4523 9 Окт 2021 в 22:51