Use strtotime()
no seu primeiro encontro e depois date('Y-m-d')
converta-o novamente:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Observe que há uma diferença entre o uso de barra /
e hífen -
na strtotime()
função. Para citar php.net:
As datas nos formatos m / d / a ou dmy são desambiguadas observando o separador entre os vários componentes: se o separador for uma barra (/), será assumido o valor m / d / a americano; enquanto que se o separador for um hífen (-) ou um ponto (.), o formato dmy europeu é assumido.
Para evitar possíveis ambiguidades, é melhor usar datas ISO 8601 (AAAA-MM-DD) ou DateTime :: createFromFormat () quando possível.
strtotime
aceita determinados formatos. Você não pode alimentá-lo. É por isso queDateTime::createFromFormat
deve ser usado em vez destrtotime
. Infelizmente, essa resposta tem muitos votos positivos para alguém prestar atenção. É tudo copiar e colar nos dias de hoje.Você precisa ter cuidado com os formatos m / d / Y e mdY. O PHP considera
/
m / d / Y e-
dmY. Eu descreveria explicitamente o formato de entrada neste caso:Dessa forma, você não está sob os caprichos de uma certa interpretação.
fonte
strtotime()
função.Para analisar a data, você deve usar: DateTime :: createFromFormat ();
Ex:
No entanto, cuidado, porque isso irá falhar com:
Você realmente precisa verificar se a formatação correu bem, primeiro:
Agora, em vez de travar, você receberá uma exceção, que pode ser capturada, propagada etc.
$ dateDE tem o formato errado, deve ser "16.10.2013";
fonte
Editar: você também pode passar um construtor DateTimeZone para DateTime () para garantir a criação da data para o fuso horário desejado, não o padrão do servidor.
fonte
Pela primeira data
Para nova data
fonte
Se você tiver o formato dd-mm-aaaa, no PHP não funcionará conforme o esperado. No documento PHP, eles têm diretrizes abaixo.
Então, você simplesmente não pode usar como quiser. Quando você tentar usar o formato dd / mm / aaaa com isso, ele removerá FALSE. Você pode ajustar o seguinte.
fonte
Como se tivéssemos a data "07 / maio / 2018" e precisamos da data "2018-05-07" como compatível com mysql
Funciona para mim. desfrutar :)
fonte
Como ninguém mencionou isso, aqui está outra maneira:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
fonte
Se você deseja aceitar datas usando pedidos americanos (mês, data, ano) para formatos de estilo europeu (usando traço ou período como dia, mês, ano) enquanto ainda aceita outros formatos , você pode estender a classe DateTime:
Ou, você pode criar uma função para aceitar mdY e gerar Ymd:
fonte
para criar data a partir de qualquer string, use:
$ date = DateTime :: createFromFormat ('dmy H: i', '01-01-01 01:00 '); eco $ date-> formato ('Ymd H: i');
fonte