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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top