Вопрос
Мне нужно сделать временную метку для включения в MySQL. Пользователь отправляет число (недель), которое мне нужно добавить столько недель к сегодняшней дате. Я пытаюсь рассчитать дату окончания объявления, которое пользователь отправляет.
Есть предложения, как это сделать? Спасибо!
Решение
Вы можете использовать strtotime
, чтобы добавить время к дате - это принимает второй аргумент, который является текущим временем, если ничего не передано. Затем вы можете передать это созданное время функции date
, чтобы создать свою метку времени.
$timestamp = date('Y-m-d H:i:s', strtotime('+10 weeks'));
Другие советы
Я думаю, что DATE_ADD (CURDATE (), INTERVAL 2 WEEK) добавит 2 недели к текущей дате, например
Если вы хотите, чтобы срок действия объявления истек в определенное время суток, вы можете использовать mktime:
$ день = дата (" d ") + ($ недель * 7);
указываете ей ($ час, $ минута, $ второе, $ месяц, $ день, $ в год);
Р>
Чтобы добавить, некоторые скажут, что хранение времени UNIX в виде простого старого поля int в базе данных является более гибким и переносимым решением. Кроме того, вставки и обновления происходят быстрее, потому что они включают в себя только хранение простых целых чисел. Это действительно зависит от того, сколько манипуляций с датами вам нужно сделать на уровне базы данных. Я стремлюсь к переносимости и выполняю все вычисления даты в PHP. Чтобы сохранить текущую временную метку, я бы просто вставил в целочисленный столбец вывод:
strtotime('now');
или
time();
которые оба возвращают текущую (unix) временную метку. После этого сравнение дат может быть выполнено путем извлечения меток времени из базы данных и выполнения простой арифметической операции, такой простой, как:
if($tsFromDb > strtotime('+28 days')) {
echo 'it is the future, zombies!';
}
Это действительно зависит от того, для чего вы используете даты.