Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sidneinovais

converter data

Recommended Posts

 

A função date faz isso.

 

 

$data = '22/02/2013';
$nova_data = date('Y-m-d', $data);

 

Vinicius esta forma que vc indicou retorna a data 1970-01-01 e um notice.

 

 

( ! ) SCREAM: Error suppression ignored for ( ! ) Notice: A non well formed numeric value encountered in D:\wamp\www\aula\folha_de_estudos.php on line 3 Call Stack # Time Memory Function Location 1 0.0144 139792 {main}( ) ..\folha_de_estudos.php:0 2 0.0144 140272 date ( ) ..\folha_de_estudos.php:3

1970-01-01

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$data = '22/02/2013'; 
$nova_data = date('Y-m-d', strototime($data));

Além do nome da função que é strtotime, o formato com barras aceito é mês/dia/ano, ou seja o strtotime só funcionaria se a data estivesse 02/22/2013, o mais próximo do nosso formato é 22-02-2013.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

o nome foi erro de digitação.

 

e a segunda coisa, o que?

Desenhando:

 

<?php

$data = '22/02/2013';
$nova_data = date('Y-m-d', strtotime($data));
echo $nova_data;

echo '<hr>';

$data = '02/22/2013';
$nova_data = date('Y-m-d', strtotime($data));
echo $nova_data;

echo '<hr>';

$data = '22-02-2013';
$nova_data = date('Y-m-d', strtotime($data));
echo $nova_data;

?>

Saída:

1969-12-31

2013-02-22

2013-02-22

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente só o que funciona é essa conforme o ESerra falou

 

$data = '22-02-2013';
$nova_data = date('Y-m-d', strtotime($data));
echo $nova_data;

 

quando utilizo a data com barra que é o que mais se usa, costumo "improvisar" com o explode.

 

 


$data= explode("/", "22/02/2013");
$nova_data= $data['2']."-".$data['1']."-".$data['0'];

echo $nova_data;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, não vamos complicar :thumbsup:

 

<?php

/**
 * Converte a data do formato americano para o brasileiro e vise-versa
 * @param string $date A data para a conversão
 * @return string A data convertida
 */
function date_reverse( $date )
{
    return ( strstr( $date, '-' ) ) ? 
	implode( '/', array_reverse( explode( '-', $date ) ) ) : 
	implode( '-', array_reverse( explode( '/', $date ) ) );
} 

var_dump( date_reverse( '19/03/2013' ) ); // string '2013-03-19' (length=10)

var_dump( date_reverse( '2013-03-19' ) ); // string '19/03/2013' (length=10)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma, eficaz e sem gambiarras, é a mostrada pelo colega ESerra.

 

 

 

 

$data = '22-02-2013';
$nova_data = date('Y-m-d', strtotime($data));
echo $nova_data;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda prefiro a velha e boa orientação a objeto :coolio:

$data = '01/12/2013';
$date = DateTime::createFromFormat($data, 'd/m/Y');
if($date === false) {
  echo 'unable to parse date: ', $data;
} else {
  echo $date->format('Y-m-d');
}


http://www.php.net/manual/en/datetime.createfromformat.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda prefiro a velha e boa orientação a objeto :coolio:

$data = '01/12/2013';
$date = DateTime::createFromFormat($data, 'd/m/Y');
if($date === false) {
  echo 'unable to parse date: ', $data;
} else {
  echo $date->format('Y-m-d');
}

 

http://www.php.net/manual/en/datetime.createfromformat.php

e quando cai no if faz oq? testei com 28/02/2011 deu unable to parse...... estranho esse negocio.

 

os parametros estão trocados, a solução q vc postou no outro topico funciona 100%

 

http://forum.imasters.com.br/topic/490054-funo-para-converter-datahora-para-formato-americano/#entry1947938

Compartilhar este post


Link para o post
Compartilhar em outros sites

jóia

obrigado pela observação, Shini!

 

@braços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew pessoal mais conseguir resolver

 

 

function converter_data($strData) {
// Recebemos a data no formato: dd/mm/aaaa
// Convertemos a data para o formato: aaaa-mm-dd
if ( preg_match("#/#",$strData) == 1 ) {
$strDataFinal = "'";
$strDataFinal .= implode('-', array_reverse(explode('/',$strData)));
$strDataFinal .= "'";
}
return $strDataFinal;
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO inserir_datas (`data`, texto) VALUES (%s, %s)",
converter_data($_POST['data']),
GetSQLValueString($_POST['texto'], "text"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.