Alexanevsky
@Alexanevsky
Любительская web-разработка

Как сделать проверку на совпадение изначально заданной и текущей даты?

Здравствуйте!

Есть определённая дата, хранящаяся в базе данных. Например 02.09.2014.
Есть какой-нибудь контент, который должен быть доступен через определённое время после этой даты (например - через 1 день).
Сделать доступность контента можно через обычные стили (стоит display: none, а при наступлении положенного времени - display: block). Опасения, что кто-нибудь просто просмотрит исходный код, меня не пугает - это не принципиально - если хочет и умеет, пускай видит всё сразу.

Так как я совсем никак не дружу с PHP, которым бы следовало это решить, придётся прибегать к JS (jQuery, если надо), основы которого(-ых) я хоть немного знаю.

С точки зрения логики, решение мне видится следующим:
1. Берём заданную дату - 02.09.2014, вставляем в скрипт. Вид даты можно изменить (порядок/символы разделителей).
2. Плюсуем к этой дате определённое количество времени, например 1 день, чтобы получилось 03.09.2014.
3. Делаем проверку: если за окном/на сервере уже 3 сентября (или позже), то в стилях блока, в котором находится этот контент, прописываем display: block.

Остался один вопрос...
Будте добры, подскажите, как это решение перевести в JS (или jQuery)? Т.е. как приплюсовать 1(2,3) дня к заданной дате и провести проверку?

Если есть какое-нибудь решение этой проблемы на PHP (в понятном для ничего в нём не понимающего виде, которое я не нашёл), буду рад с ним ознакомиться, где-нибудь почитать.

С уважением,
Александр.

UPD:
var today = new Date()
var date = new Date("нужная дата")
и если today = date уже делать всё что надо.

Прокатит?
  • Вопрос задан
  • 3109 просмотров
Решения вопроса 1
var startdate = "02.09.2014", // дата в формате день.месяц.год приехавшая из php
days = 1; // число дней через которое можно показывать контент

// двух строчек ниже можно избежать если сразу присылать дату в формате месяц/день/год
startdate = startdate.split('.');
startdate = startdate[1]+'/'+startdate[0]+'/'+startdate[2];

startdate = new Date(Date.parse(startdate));
startdate.setDate(startdate.getDate()+days);

if (new Date().getTime() > startdate.getTime()) { /*показываем контент*/ } else { /*скрываем контент*/ }
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Wendor
@Wendor
nodejs developer / *nix admin
Делайте выборку из базы данных WHERE `added_date` < '2013-09-04' и не парьтесь.

UPD
тогда как-то так:
SELECT *
FROM `posts`
WHERE (
	SELECT COUNT(*)
	FROM `users`
	WHERE
		`user_id` = 1919 AND
		`registration_date` < DATE_ADD(NOW(), INTERVAL -2 DAY)
) > 0;


где 1919 - id текущего юзера.
Ответ написан
swanrnd
@swanrnd
Издатель HTML5 игр
Есть такое понятие как UnixTime - количество секунд которое прошло с 01.01.1970. В нем можно хранить дату. Один день -- это 24*3600.

Хотя можно складывать и даты, но секунды проще.
Ответ написан
Комментировать
@Testtest132
Есть объект Date в JS
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы