PHP - конвертировать дату в дату UTC - PullRequest
2 голосов
/ 29 августа 2011

У меня есть дата, извлеченная из базы данных MySQL в форме ГГГГ-ММ-ДД.

Теперь у меня есть некоторый javascript, который требует таких дат:

data: [
            [Date.UTC(2010, 0, 1), 29.9], 
            [Date.UTC(2010, 2, 1), 71.5], 
            [Date.UTC(2010, 3, 1), 106.4]
        ]

Поэтому я подумал, что могу сделать следующее:

while($row = mysql_fetch_array($sql)){  
      $thedate = explode('-', $row['date']); //$row['date'] = YYYY-MM-DD      
      $str .= '[Date.UTC(' . $thedate[0].','.$thedate[1].','.$thedate[2].'), '.$row['answer'].'],';
      $i++;
    }

А затем просто перехватите это на стороне браузера, используя запрос AJAX в переменной data, что дает:

data: [data]

При оповещении о содержании данных я замечаю, что получаю что-то вроде следующего для 22 и 23 августа:

[Date.UTC(2011, 08, 22), 55], [Date.UTC(2011, 08, 23), 65]

Когда мне нужно

[Date.UTC(2011, 7, 22), 55], [Date.UTC(2011, 7, 22), 65]

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

YYYY

Ответы [ 2 ]

0 голосов
/ 30 августа 2011
while($row = mysql_fetch_array($sql)){ 
  $timestamp = strtotime($row['date']); 
  $str .= '[Date.UTC(' . date('Y', $timestamp). ', ';
    $str .= date('n', $timestamp) - 1 . ', ';
    $str .= date('j', $timestamp) . '), ' . $row['answer'] . '],';
}

о DateTime - это отличный класс, но доступен только для pphp> = 5.2

0 голосов
/ 29 августа 2011

Какой это формат?В любом случае, используйте DateTime::createFromFormat для анализа даты, после чего вы можете отформатировать ее так, как вам нравится.

Пример:

while($row = mysql_fetch_array($sql)){  
    $Date = DateTime::createFromFormat( 'Y-m-d', $row['date'] ); 
    $str .= '[Date.UTC(' . $Date->format('Y') . ', ';
    $str .= $Date->format('n') - 1 . ', ';
    $str .= $Date->format('j') . '), ' . $row['answer'] . '],';
}

Кстати, посмотрите на json_encode http://php.net/manual/en/function.json-encode.php

...