Converter o formato da data AAAA-mm-dd => dd-mm-AAAA [duplicado]

[[2] esta pergunta já tem uma resposta aqui:

estou a tentar converter uma data de AAAA-mm-dd para dd-mm-AAAA (mas não em SQL); no entanto, não sei como a função data necessita de uma data-limite, e não consigo obter uma data-limite a partir deste texto.

Que tal isto? possível?

Author: Peter Mortensen, 2010-03-21

12 answers

Utilizar strtotime() e date():

$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));

(Ver strtotime e date docs on the PHP site).

Edit : Note que esta foi uma solução rápida para a questão original. Para conversões mais extensas, você realmente deve estar usando o DateTime Classe A & formato de processamento: -)

 884
Author: richsage, 2016-04-11 12:25:07

Se quiser evitar a conversão do strtotime (por exemplo, o strtotime não é capaz de processar a sua entrada) pode usar,

$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');

Ou, de forma equivalente:

$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');

Primeiro está a dar-lhe o formato em que a $dateString está. Então você está dizendo o formato que você quer $newDateString para estar em.

Ou se o formato-fonte For sempre " Y-m-d "(AAAA-mm-dd), então use apenas DateTime:

<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
 232
Author: ceiroa, 2015-11-25 06:42:21
implode('-', array_reverse(explode('-', $date)));
Sem a conversão de data, não sei se será importante.
 61
Author: Tim Lytle, 2010-03-21 18:23:15
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);

Este código funciona para cada formato de data.

Você pode alterar a ordem das variáveis de substituição como$3- $ 1- $ 2 devido ao seu formato de data anterior.

 31
Author: Alper Sarı, 2011-12-20 08:10:20
$timestamp = strtotime(your date variable); 
$new_date = date('d-m-Y', $timestamp);

Para mais:

Clique aqui

Ou ainda mais curto:

$new_date = date('d-m-Y', strtotime(your date variable));
 26
Author: Kevin, 2017-02-03 11:02:09

Também outra possibilidade Obscura:

$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
Não sei se o usaria, mas mesmo assim ...
 24
Author: Gabriel, 2016-02-05 07:53:26

Edite: porque a resposta deste post às vezes é upvoted, eu voltei vim pedir às pessoas que não votem mais. A minha resposta é: antigo, não tecnicamente correcto, e há vários melhores aproxima-se aqui. Só estou a guardá - lo aqui por razões históricas. problema.

Embora a documentação descreva mal a função strtotime, @rjmunro abordou corretamente a questão em seu Comentário: está na ISO formato data "AAAA-MM-DD".

Também, mesmo que a minha função Date_Converter ainda funcione, eu gostaria de avisar que pode haver declarações imprecisas abaixo, por isso, por favor ignorem-nos.

a resposta Mais votada é, na verdade, incorrecta!

PHP strtotime Manual here states that "the function expects to be given a string containing an English date format". o que realmente significa é que ele espera um formato de data americano, como "m-d-Y" ou "m / d / Y".

Isso significa que uma data fornecida como "Y-m-d" pode ser mal interpretada pelo strtotime. Você deve fornecer a data no formato esperado.

Escrevi uma pequena função para devolver datas em vários formatos. Use e modifique como quiser. Se alguém transformar isso numa aula, ficaria feliz se isso fosse partilhado.

function Date_Converter($date, $locale = "br") {

    # Exception
    if (is_null($date))
        $date = date("m/d/Y H:i:s");

    # Let's go ahead and get a string date in case we've been given a Unix Time Stamp
    if ($locale == "unix")
        $date = date("m/d/Y H:i:s", $date);

    # Separate Date from Time
    $date = explode(" ", $date);

    if ($locale == "br") {
        # Separate d/m/Y from Date
        $date[0] = explode("/", $date[0]);
        # Rearrange Date into m/d/Y
        $date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
    }

    # Return date in all formats
        # US
        $Return["datetime"]["us"]   = implode(" ", $date);
        $Return["date"]["us"]       = $date[0];
        # Universal
        $Return["time"]         = $date[1];
        $Return["unix_datetime"]    = strtotime($Return["datetime"]["us"]);
        $Return["unix_date"]        = strtotime($Return["date"]["us"]);
        $Return["getdate"]          = getdate($Return["unix_datetime"]);
        # BR
        $Return["datetime"]["br"]   = date("d/m/Y H:i:s", $Return["unix_datetime"]);
        $Return["date"]["br"]       = date("d/m/Y", $Return["unix_date"]);

    # Return
    return $Return;


} # End Function
 17
Author: Igor Donin, 2017-11-24 13:41:48

Duas formas de implementar isto

1)

$date = strtotime(date); 
$new_date = date('d-m-Y', $date);

2)

$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y'); 
 15
Author: Raja Ram T, 2014-05-20 06:49:17
Podes tentar.strftime função. Algo como ... strftime($time, '%d %m %Y');
 10
Author: Sinan, 2015-07-23 06:51:30

Utilize esta função para converter de qualquer formato para qualquer formato

function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
    $date_aux = date_create_from_format($from_format, $date);
    return date_format($date_aux,$to_format);
}
 9
Author: Juancho Ramone, 2015-09-29 21:22:07

Abaixo é indicado o código PHP para gerar a data de amanhã usando mktime() e mudar o seu formato para dd/mm/AAAA e depois imprimi-lo usando echo.

$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
 8
Author: Vishnu, 2014-02-02 10:53:46
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
 7
Author: Abdul Basit, 2015-07-23 06:51:48