Подтвердить что ты не робот

Преобразование TIMESTAMP в unix-время в PHP?

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

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

Итак, как мне преобразовать временную метку в временную метку unix? Есть ли для него простая php-функция?

4b9b3361

Ответ 2

Вы хотите strtotime:

print strtotime('2010-05-17 19:13:37'); // => 1274123617

Ответ 3

Получение unixtimestamp:

$unixTimestamp = time();

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

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

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

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

Преобразование его в unixtimestamp:

$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

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

SELECT UNIX_TIMESTAMP(my_datetime_field)

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

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

Ответ 5

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

SELECT UNIX_TIMESTAMP(date) ...;
Базы данных

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