Преобразование TIMESTAMP в Unix время в PHP? - PullRequest
24 голосов
/ 17 мая 2010

В настоящее время я храню время в своей базе данных примерно так: 2010-05-17 19:13:37

Однако мне нужно сравнить два раза, и я чувствую, что было бы легче сделать это, если бы это была метка времени Unix, например 1274119041. (Эти два раза разные)

Так как я могу преобразовать метку времени в метку времени Unix? Для этого есть простая функция php?

Ответы [ 5 ]

35 голосов
/ 17 мая 2010

Вы ищете strtotime ()

13 голосов
/ 17 мая 2010

Вы хотите strtotime :

print strtotime('2010-05-17 19:13:37'); // => 1274123617
6 голосов
/ 10 января 2013

Получение метки unixtime:

$unixTimestamp = time();

Преобразование в формат даты и времени mysql:

$mysqlTimestamp = date("Y-m-d H:i:s", $unixTimestamp);

Получение некоторой метки времени mysql:

$mysqlTimestamp = '2013-01-10 12:13:37';

Преобразование его в метку unixtime:

$unixTimestamp = strtotime('2010-05-17 19:13:37');

... сравнивая его с одним или несколькими временами, чтобы увидеть, вводил ли пользователь реалистичное время:

if($unixTimestamp > strtotime("1999-12-15") && $unixTimestamp < strtotime("2025-12-15"))
{...}

Штампы Unix также безопаснее. Вы можете сделать следующее, чтобы проверить, является ли переданная переменная url действительной, перед проверкой (например) предыдущей проверки диапазона:

if(ctype_digit($_GET["UpdateTimestamp"]))
{...}
4 голосов
/ 17 мая 2010

Если вы используете MySQL в качестве базы данных, он может возвращать поля даты в виде меток времени Unix с UNIX_TIMESTAMP :

SELECT UNIX_TIMESTAMP(my_datetime_field)

Вы также можете сделать это на стороне PHP с помощью strtotime :

strtotime('2010-05-17 19:13:37');
3 голосов
/ 17 мая 2010

если вы храните время в базе данных, почему бы вам не позволить базе данных также дать вам ее временную метку? см. UNIX_TIMESTAMP(date), например,

SELECT UNIX_TIMESTAMP(date) ...;

базы данных могут также выполнять сравнение даты и времени и арифметику.

...