Как лучший способ создать просто календарь? - PullRequest
3 голосов
/ 06 декабря 2011

как лучший способ создать просто календарь?

у меня есть например в db:

id | date(unique)| text
1  | 2011-02-02  | aaa
2  | 2011-03-03  | bbb
3  | 2011-03-04  | ccc
..
10 | 2011-03-11  | dfg

например сейчас 2011-03-04.Я хотел бы получить из базы данных -2 и +4 дней: 02, 03, 04 , 05, 06, 07, 08.

в PHP я делаю:

$ now = strtotime ("now");и вырезать эту подстроку (0, 10).

но как я могу проверить -2 и +4 дня.в этом примере это просто, но что, если это 2011-11-30 и + 4 дня, это новый месяц.Я хотел бы сделать это автоматически.это возможно?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011
select * 
from table 
where `date` 
between curdate() - interval 2 day and curdate() + interval 4 day

PHP версия

$past = date('Y-m-d', strtotime('-2 days'));
$future = date('Y-m-d', strtotime('+4 days'));
1 голос
/ 06 декабря 2011

Используйте PHP (> = 5.3) new Класс DateTime :

Например, чтобы добавить 4 дня к дате, которую вы сделаете:

$date = new DateTime('2011-11-30');
$date->add(new DateInterval('P4D'));
echo $date->format('Y-m-d');

Комувычтите четыре дня, вы будете использовать:

$date->sub(new DateInterval('P4D'));

Намного приятнее, чем strtotime, mktime и т. д.

Воспользуйтесь преимуществами новых функций: -)

0 голосов
/ 06 декабря 2011

Используйте mktime. Таким образом, текущая дата, т.е. 2011-03-04:

$date = explode('-', '2011-03-04');
$d = $date[2] - 2;

do
{
    echo date('Y-m-d', mktime(0, 0, 0, $date[1], $d, $date[0]) . '<br />';
    $d++;
} while($d < ($date[2] + 4));

Это должно помочь! Остальное зависит от вас;)

...