В настоящее время я храню время в своей базе данных так: 2010-05-17 19:13:37
Тем не менее, мне нужно сравнить два раза, и я чувствую, что было бы легче сделать, если бы это была временная отметка unix, такая как 1274119041
. (Эти два раза разные)
Итак, как мне преобразовать временную метку в временную метку unix? Есть ли для него простая функция php?
Вы ищете strtotime ()
Вы хотите strtotime :
print strtotime('2010-05-17 19:13:37'); // => 1274123617
Получение unixtimestamp:
$unixTimestamp = time();
Преобразование в формат mysql datetime:
$mysqlTimestamp = date("Ymd 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"])) {...}
Если вы используете MySQL в качестве своей базы данных, она может возвращать поля даты в качестве временных меток unix с помощью UNIX_TIMESTAMP :
SELECT UNIX_TIMESTAMP(my_datetime_field)
Вы также можете сделать это на стороне PHP с помощью strtotime :
strtotime('2010-05-17 19:13:37');
если вы храните время в базе данных, почему бы вам не позволить базе данных также предоставить вам временную метку unix? см. UNIX_TIMESTAMP(date)
, например.
SELECT UNIX_TIMESTAMP(date) ...;
базы данных также могут проводить сопоставление дат и времени и арифметику.