Como fazer as datas de análise do strtotime no formato australiano (isto é, Reino Unido): dd / mm / aaaa?
Não acredito que nunca me deparei com essa antes.
Basicamente, estou analisando o texto em documentos de texto criados por humanos e um dos campos que preciso analisar é uma data e hora. Como estou na Austrália, as datas são formatadas comodd/mm/yyyy
masstrtotime
só deseja analisá-lo como uma data formatada nos EUA. Além disso, explodindo por/
não vai funcionar porque, como mencionei, esses documentos são digitados à mão e alguns deles assumem a forma ded M yy
.
Eu tentei várias combinações desetlocale
mas não importa o que eu tente, o idioma é sempre definido como inglês dos EUA.
Tenho certeza de que setlocale é a chave aqui, mas não consigo encontrar o código certo. Tentei estes:
auau-enen_AUAustráliaausMais alguma coisa que eu possa tentar?
Para maior clareza: estou executando o IIS com uma caixa do Windows.
Muito obrigado :)
Iain
Exemplo:
$mydatetime = strtotime("9/02/10 2.00PM");
echo date('j F Y H:i', $mydatetime);
Produz
2 September 2010 14:00
Eu quero que ele produza:
9 February 2010 14:00
Minha solução
Estou assinalando uma das respostas aqui, pois é uma solução muito mais fácil de ler, mas aqui está o que eu vim:
$DateTime = "9/02/10 2.00PM";
$USDateTime = preg_replace('%([0-3]?[0-9]{1})\s*?[\./ ]\s*?((?:1[0-2])|0?[0-9])\s*?[./ ]\s*?(\d{4}|\d{2})%', '${2}/${1}/${3}', $DateTime);
echo date('j F Y H:i',strtotime($USDateTime));
Como não posso confiar nos usuários para serem consistentes com a entrada de data, tornei minha regex um pouco mais complexa:
0 ou 1 dígito entre 0 e 31 dígito entre 0 e 9 - sim, isso corresponderá a 37 como uma data válida, mas acho que o regex já é grande o suficiente!Pode haver algum espaço em brancoCaractere delimitante (a '.', A '/' ou a '')Pode haver algum espaço em brancoOu:Um número entre 10 e 12 OUUm número entre 1 e 9 com um 0 inicial opcionalPode haver algum espaço em brancoCaractere delimitante (a '.', A '/' ou a '')Pode haver algum espaço em brancoOu:Um número com 2 dígitos de comprimento OUUm número de 4 dígitosEspero que isso corresponda à maioria dos estilos de escrita de data ...