Ответ 1
Вы ищете strtotime()
В настоящее время я храню время в своей базе данных следующим образом: 2010-05-17 19:13:37
Однако мне нужно сравнить два раза, и я чувствую, что было бы легче сделать, если бы это была временная метка unix, такая как 1274119041
. (Эти два раза разные)
Итак, как мне преобразовать временную метку в временную метку unix? Есть ли для него простая php-функция?
Вы ищете strtotime()
Вы хотите strtotime:
print strtotime('2010-05-17 19:13:37'); // => 1274123617
Получение 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"]))
{...}
Если вы используете 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) ...;
Базы данных также могут проводить сопоставление дат и времени и арифметику.