График amCharts [Stocks] - PullRequest
       29

График amCharts [Stocks]

0 голосов
/ 29 июля 2011

Я использовал графики акций amCharts для отображения данных из файла .csv Yahoo Finance, который отображает данные в этом формате: (который работает)

Date,Open,High,Low,Close,Volume,Adj Close
2011-07-27,617.18,620.95,604.75,607.22,3934400,607.22
2011-07-26,618.05,627.50,617.22,622.52,2342900,622.52
2011-07-25,613.36,625.41,613.00,618.98,3131600,618.98

Однако теперь мне нужно получить данные из Google Finance, и они форматируют свои данные в этом формате (который не работает).

Date,Open,High,Low,Close,Volume
28-Jul-11,36.02,36.84,36.01,36.42,8870180
27-Jul-11,36.71,36.86,35.98,36.06,10395443
26-Jul-11,37.26,37.27,36.80,36.86,6366097

Я считаю, что формат данных в Yahoo и Google отличается от того, что amChart не отображает никаких цифр, потому что не может прочитать файл.

Как мне отформатировать дату, чтобы она правильно читала значения?

Ответы [ 2 ]

1 голос
/ 15 октября 2011

amStock не поддерживает даты в формате 28-Jul-11.Вам нужно будет создать прокси-скрипт на стороне сервера, который преобразует все даты в некоторый поддерживаемый формат, например 2011-07-28.

Вот один пример в PHP:

<?php
// get input data (replace with the actual data)
// i.e.: $input = file_get_contents('http://...........');
$input = "Date,Open,High,Low,Close,Volume
28-Jul-11,36.02,36.84,36.01,36.42,8870180
27-Jul-11,36.71,36.86,35.98,36.06,10395443
26-Jul-11,37.26,37.27,36.80,36.86,6366097";

// parse line by line
$lines = preg_split("/\r\n|\r|\n/", $input);
$cnt = sizeof($lines);
for ($i = 0; $i < $cnt; $i++) {
  $cols = explode(',', $lines[$i]);
  if ($date = strtotime($cols[0])) {
    $cols[0] = date('Y-m-d', $date);
    $lines[$i] = implode(',', $cols);
  }
}

// output
header('Content-Type: text/csv');
echo implode("\r\n", $lines);
?>
1 голос
/ 15 октября 2011

Я предполагаю, что вы используете графики amstock 1.4.0.1.В вашем amstock_settings.xml вам нужно отредактировать настройки формата даты.По умолчанию используется YYYY-MM-DD, который, как я полагаю, исходя из вашего примера, является форматом даты Yahoo Finance по умолчанию в их CSV.Формат даты Google Finance - DD-Mon-YY, который на основе AmCharts 'Mon' не является допустимым символом.Вы можете попробовать изменить настройки на DD-Mon-YY и посмотреть, работает ли он, если нет, вам может понадобиться программа (например, java), чтобы изменить значения даты в csv на YYYY-MM-DD.

<!-- [YYYY-MM-DD] (date format) The valid symbols are: YYYY, MM, DD, hh, mm, ss, fff. Any order
     and separators can be used, for example: DD-MM-YYYY, YYYY-MM, YYYY-DD-MM hh, 
     DD-MM-YY hh:mm:ss, etc. fff means milliseconds. In case you use miliseconds, you must provide the
     3 digit number -->
     <date_format>YYYY-MM-DD</date_format>
...