Converter de MySQL data e hora para outro formato com PHP
Pergunta
Eu tenho uma coluna datetime
no MySQL.
Como se pode converter no visor como
Solução 2
Para converter uma data recuperado do MySQL para o formato solicitado (mm/dd/yy H:M (AM/PM)
):
// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM
Consulte a PHP data opções para ajustar o formato.
Outras dicas
Se você está procurando uma maneira de normalizar uma data para o formato MySQL, use o seguinte
$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
O $phpdate = strtotime( $mysqldate )
linha aceita uma string e executa uma série de heurísticas para transformar essa string em um timestamp unix.
Os usos linha $mysqldate = date( 'Y-m-d H:i:s', $phpdate )
que timestamp e função date
do PHP para transformar essa volta timestamp no formato de data padrão do MySQL.
( Nota do Editor : Esta resposta está aqui por causa de uma pergunta inicial com confundindo redação, e a utilidade geral do Google esta resposta fornecida, mesmo que didnt de responder diretamente a pergunta que agora existe)
Se você estiver usando PHP 5, você também pode tentar
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));
Referência: http://php.net/manual /en/function.date.php
Finalmente a solução certa para PHP 5.3 e acima:
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');
Uma maneira mais fácil seria a de formatar a data diretamente na consulta MySQL, em vez de PHP. Veja a MySQL entrada manual para DATE_FORMAT .
Se você prefere fazê-lo em PHP, então você precisa do href="http://uk.php.net/date" rel="noreferrer"> função
Esqueça tudo. utilização apenas:
$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
Para formatar corretamente um objeto DateTime
em PHP para armazenar no MySQL usar o formato padronizado que usos do MySQL, que é ISO 8601 .
PHP teve este formato armazenado como uma constante desde a versão 5.1.1, e eu recomendo usá-lo em vez de digitar manualmente a seqüência de cada vez.
$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);
Este, e uma lista de outras constantes PHP DateTime estão disponíveis em http://php.net/manual/en/class.datetime.php#datetime.constants.types
Isso deve formatar um campo em uma consulta SQL:
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
Use a função de data :
<?php
echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
Dependendo da configuração do MySQL data e hora. Normalmente: 2011-12-31 07:55:13 formato. Esta função muito simples deve fazer a mágica:
function datetime()
{
return date( 'Y-m-d H:i:s', time());
}
echo datetime(); // display example: 2011-12-31 07:55:13
Ou um pouco mais antecedência para coincidir com a questão.
function datetime($date_string = false)
{
if (!$date_string)
{
$date_string = time();
}
return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT
DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo
Se você não quer mudar todas as funções em seu código PHP, para mostrar o formato da data esperada, alterá-lo na fonte -. Seu banco de dados
É importante mencionar as linhas com o
A saída deste exemplo será
[Dia do mês, numérico (0..31)]. [Nome Month (January..December)]. [Ano, numéricos, quatro dígitos]
Exemplo: 5.August.2015
Alterar os pontos com o separador de escolha e verificar o DATE_FORMAT (data, formato) função para mais formatos de data.
Você também pode ter sua consulta retornar o tempo como um timestamp Unix. Isso se livrar da necessidade de strtotime()
chamada e tornar as coisas um pouco menos intensa no lado do PHP ...
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
Então, em PHP apenas usar a função date()
para formatá-lo do jeito que você gostaria.
<?php
echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>
ou
<?php
echo date('F j, Y, g:i a', $row->unixtime);
?>
Eu gosto desta abordagem em vez de usar MySQL 's DATE_FORMAT
função, pois permite você reutilize a mesma consulta para pegar os dados e permite que você alterar a formatação em PHP.
É chato ter duas consultas diferentes apenas para mudar a forma como a data olhares na interface do usuário.
Você pode ter problemas com datas não retornados em Unix Timestamp, então isso funciona para mim ...
return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
Este trabalho ...
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
Usando PHP versão 4.4.9 e MySQL 5.0, isso funcionou para mim:
$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate
PubDate
é a coluna na MySQL .
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";