Como obtenho carimbo de data e hora, por exemplo 22-09-2008
?
350
Este método funciona em ambos Windows e Unix e é de fuso horário conscientes, que é provavelmente o que você quer se você trabalha com datas .
Se você não se importa com o fuso horário, ou deseja usar o fuso horário que seu servidor usa:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (Isso varia de acordo com o fuso horário do servidor ...)
Se você deseja especificar em qual fuso horário, aqui EST. (Igual a Nova York.)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
Ou se você deseja usar o UTC . (O mesmo que " GMT ".)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
Independentemente disso, é sempre um bom ponto de partida para ser rigoroso ao analisar seqüências de caracteres em dados estruturados. Ele pode economizar depuração estranha no futuro. Portanto, recomendo sempre especificar o formato da data.
Há também strptime () que espera exatamente um formato:
fonte
date_parse_from_format
vez destrptime
.strptime
não está implementado nas plataformas Windows.Com
DateTime
API :O mesmo com a API processual:
Se o acima falhar porque você está usando um formato não suportado , você pode usar
Observe que, se você não definir
!
, a parte da hora será definida para a hora atual, diferente das quatro primeiras que usarão a meia-noite quando você omitir a hora.Outra alternativa é usar a
IntlDateFormatter
API:A menos que você esteja trabalhando com seqüências de datas localizadas, a escolha mais fácil é provavelmente DateTime.
fonte
!
registro de data e hora baseado em Minha data estava mudando a cada atualização e me deixando louco - porque o DateTime estava adicionando o horário atual de maneira útil sem perguntar ou ser avisado. Grrr.Tenha cuidado com funções como
strtotime()
essa, tentando "adivinhar" o que você quer dizer (não adivinha, é claro, as regras estão aqui ).Na verdade
22-09-2008
, será analisado em 22 de setembro de 2008 , pois é a única coisa razoável.Como será
08-09-2008
analisado? Provavelmente 09 de agosto de 2008 .Que tal
2008-09-50
? Algumas versões do PHP analisam isso em 20 de outubro de 2008 .Portanto, se você tem certeza de que sua entrada está no
DD-MM-YYYY
formato, é melhor usar a solução oferecida pelo @Armin Ronacher .fonte
dd-mm-yyyy
nãomm-dd-yyyy
.YYYY-mm-dd
A conversão acontece apenas para exibição para os usuáriosEste método funciona em ambos Windows e Unix e é de fuso horário conscientes, que é provavelmente o que você quer se você trabalha com datas .
Se você não se importa com o fuso horário, ou deseja usar o fuso horário que seu servidor usa:
1222093324 (Isso varia de acordo com o fuso horário do servidor ...)
Se você deseja especificar em qual fuso horário, aqui EST. (Igual a Nova York.)
1222093305
Ou se você deseja usar o UTC . (O mesmo que " GMT ".)
1222093289
Independentemente disso, é sempre um bom ponto de partida para ser rigoroso ao analisar seqüências de caracteres em dados estruturados. Ele pode economizar depuração estranha no futuro. Portanto, recomendo sempre especificar o formato da data.
fonte
Usando mktime :
fonte
strtotime()
Por algum motivostrtotime()
, não funciona em determinadas datas e, portanto, é pouco confiável.Usando a função strtotime (), você pode facilmente converter a data em carimbo de data / hora
Mais informações: http://php.net/manual/en/function.strtotime.php
Ferramenta de conversão online: http://freeonlinetools24.com/
fonte
Aqui está uma solução muito simples e eficaz usando as funções
split
emtime
:Funcionou como um encanto para mim.
fonte
Como a função
strptime()
não funciona no Windows estrtotime()
pode retornar resultados inesperados, recomendo usardate_parse_from_format()
:fonte
Se você deseja saber com certeza se uma data é analisada como esperado, use
DateTime::createFromFormat()
:É óbvio neste caso, mas, por exemplo,
03-04-2008
pode ser 3 de abril ou 4 de março, dependendo de onde você vem :)fonte
DateTime::createFromFormat
retornafalse
com erro , nãonull
.Se você sabe que o uso de formato
strptime
porquestrtotime
faz um palpite para o formato, que pode não ser sempre correto. Comostrptime
não é implementado no Windows, há uma função personalizadaLembre-se de que o valor de retorno
tm_year
é de 1900! etm_month
é 0-11Exemplo:
fonte
http://php.net/manual/en/function.date.php
fonte
fonte
Use a função PHP
strtotime()
data - Formate uma hora / data local
fonte
fonte
Se desejar, coloque-o em um registro de data e hora do tipo MySQL . O acima funciona muito bem (apenas no PHP 5 ou posterior):
fonte
Aqui está como eu faria isso:
Dessa forma, você deixa a função saber qual formato de data está usando e até especifica o fuso horário.
fonte
Por favor, tenha cuidado com o fuso horário se você o definir para salvar datas no banco de dados, pois eu tive um problema ao comparar datas do mysql que foram convertidas para
timestamp
usostrtotime
. você deve usar exatamente o mesmo fuso horário antes de converter a data em carimbo de data / hora, caso contrário, strtotime () usará o fuso horário do servidor padrão.Por favor, veja este exemplo: https://3v4l.org/BRlmV
fonte
Se você deseja converter um datetime (
2016-02-14T12:24:48.321Z
) UTC em um carimbo de data / hora, veja como você faria isso:fonte