Convertendo o registro de data e hora em tempo Unix no PHP?
-
27-09-2019 - |
Pergunta
Atualmente, guardo o tempo no meu banco de dados como assim: 2010-05-17 19:13:37
No entanto, preciso comparar duas vezes e sinto que seria mais fácil fazer se fosse um registro de data e hora do Unix, como 1274119041
. (Essas duas vezes são diferentes)
Então, como eu poderia converter o registro de data e hora em registro de data e hora do Unix? Existe uma função PHP simples para isso?
Solução
Você está procurando strtotime ()
Outras dicas
Você quer strtotime:
print strtotime('2010-05-17 19:13:37'); // => 1274123617
Obtendo um unixtimestamp:
$unixTimestamp = time();
Convertendo para o formato MySQL DateTime:
$mysqlTimestamp = date("Y-m-d H:i:s", $unixTimestamp);
Obtendo alguns registros de data e hora do MySQL:
$mysqlTimestamp = '2013-01-10 12:13:37';
Convertendo -o em um unixtimestamp:
$unixTimestamp = strtotime('2010-05-17 19:13:37');
... comparando -o com uma ou uma variedade de vezes, para ver se o usuário inseriu um tempo realista:
if($unixTimestamp > strtotime("1999-12-15") && $unixTimestamp < strtotime("2025-12-15"))
{...}
Os timestamps do Unix também são mais seguros. Você pode fazer o seguinte para verificar se uma variável passada de URL é válida, antes de verificar (por exemplo) a verificação de intervalo anterior:
if(ctype_digit($_GET["UpdateTimestamp"]))
{...}
Se você estiver usando o MySQL como seu banco de dados, ele pode retornar campos de data como timestamps do Unix com Unix_timestamp:
SELECT UNIX_TIMESTAMP(my_datetime_field)
Você também pode fazer isso no lado do PHP com strtotime:
strtotime('2010-05-17 19:13:37');
Se você armazena o tempo no banco de dados, por que não deixa o banco de dados também fornecer o registro de data e hora do Unix? Vejo UNIX_TIMESTAMP(date)
, por exemplo.
SELECT UNIX_TIMESTAMP(date) ...;
Os bancos de dados também podem fazer comparações de data e hora e aritmética.