Вопрос

Мне нужно сделать временную метку для включения в 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!';
}

Это действительно зависит от того, для чего вы используете даты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top