2016-10-14 2 views
1

Мне нужно отобразить даты текущей недели в линейной диаграмме по оси x.Я хочу получить даты предыдущей недели относительно текущей даты в php, JS или JQuery

Мне нужно получить предыдущие даты недели, начиная с сегодняшней даты. Ex. Мне нужно получить даты как массив значений, начиная с 1-го по 7-й месяц, если сегодня 7-й. Я новичок в php и хотел бы простое понятное решение. Это мой JS для отображения строки диаграммы ..

$(function() { 
    $('#container1').highcharts({ 
     title: { 
      text: '', 
      x: -20 //center 
     }, 
     /*subtitle: { 
      text: 'Source: WorldClimate.com', 
      x: -20 
     },*/ 
     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 
     yAxis: { 
      title: { 
       text: '' 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
      }] 
     }, 
     tooltip: { 
      valueSuffix: '' 
     }, 
     legend: { 
      layout: 'vertical', 
      align: 'right', 
      verticalAlign: 'middle', 
      borderWidth: 0 
     }, 
     series: [{ 
      name: 'Total Requirements', 
      data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 
     },{ 
      name: 'Requirements with no Submissions', 
      data: [1.5, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
     },{ 
      name: 'Requirements to which Profiles were Submitted', 
      data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 
     }] 
    }); 

мне нужен массив дат, чтобы иметь возможность направить их к категориям вместо значений по умолчанию в них и отображение на оси х. Я пробовал эту вещь, но она давала мне некоторые нежелательные значения, а также только текущую неделю, если она находится в середине текущей недели, вместо того, чтобы переходить на предыдущую неделю, принимая 7 дней в счет.

<?php 
     $dt = new DateTime(); 
     $dates = []; 
     for ($d = 1; $d <= 6; $d++) { 
     $dt->setISODate($dt->format('o'), 
     $dt->format('W'), $d); 
     $dates[$dt->format('D')] = $dt->format('m-d-Y'); 
     $string=implode(",",$dates); 
     echo $string; 
    } 
    ?> 

Мой выход должен быть 10/1 10/2 10/3 10/7 ... если сегодня седьмой независимо от недели.

+0

Можете ли вы показать код, который у вас есть? d – Shibon

+0

добавлен код php. –

ответ

0

Вы можете попробовать это, сначала получите сегодняшнюю дату, чем вы можете запустить цикл назад или вперед в соответствии с вашими потребностями.

P.S:Вам нужно сделать UTC смещения и т.д., если вы собираетесь управлять с разными часовыми поясами.

 $date=date_create(DATE("d-m-Y")); 

$array=[]; 
array_push($array, date_format($date,"m/j")); 
    for($i=7;$i>0;$i--) 
    { 
    date_sub($date,date_interval_create_from_date_string("1 days")); 
    array_push($array, date_format($date,"m/j")); 
    } 
    echo json_encode(array_reverse($array));// or you can do echo json_encode($array) to return json 

По выходе описанного вами, вам нужно будет изменить формат даты так изменить код с

array_push($array, date_format($date,"m/j")); 

и вы получите следующий результат

["10\/7","10\/8","10\/9","10\/10","10\/11","10\/12","10\/13","10\/14"] 

Текущая дата 10/14

+0

Спасибо, но формат даты, который я получил, был ["10 \/07", "10 \/08", "10 \/09", "10 \/10", "10 \/11", "10 \/12 "," 10 \/13 "," 10 \/14 "] вместо 10/7. –

+0

и как передать это в массив категорий в моем JS? –

+0

вам нужно будет json, сделав ** json_encode ** вместо ** print_r **, и вы можете получить json с ajax-запросом javascript или jquery, чтобы передать json в highcharts – Technacron

Смежные вопросы