плюс неделя с PHP Дата с GET? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть URL:

http://www.mysite.com/

вот это:

$date = new DateTime("2011-11-28"); 

это покажи мне:

2011-11-28

Я хотел бы добавить для этого сайта кнопки ПРЕДЫДУЩАЯ и СЛЕДУЮЩАЯ. Если я нажму СЛЕДУЮЩАЯ, тогда у меня будет URL:

http://www.mysite.com/number/2

вот это покажи мне:

2011-12-05 //(+ 7 days)

и у меня есть кнопки ПРЕДЫДУЩАЯ (http://www.mysite.com/number/1) и СЛЕДУЮЩАЯ (http://www.mysite.com/next/3)) и т.д.

Как я могу изменить

$date = new DateTime("2011-11-28");

с $ _GET ['number']? Я должен изменить с 2011-11-28 интервал 7 дней!

Ответы [ 6 ]

1 голос
/ 28 декабря 2011

Оформить DateTime :: modify (доступно в PHP> = 5.2)

То, что вы хотите сделать, это:

// just for checking if nobody is tampering with the number variable:
if (strcspn($_GET['number'], '0123456789') != strlen($_GET['number']) {
    die('Invalid input!');
}
// actual calculation:
$amountOfDays = ((int)$_GET['number']) * 7;
$date = new DateTime("2011-11-28");
$date->modify('+'.$amountOfDays.' day');

Кроме того, вы можете использовать DateTime :: add , но это определено только в версиях PHP> = 5.3.

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

Мне очень нравится strtotime :) Это работает так:

$date = new DateTime("2011-11-28"); 
$prevWeek = strtotime('-1 week',$date);
$nextWeek = strtotime('+1 week',$date);
0 голосов
/ 28 декабря 2011

Попробуйте это:

$days = (intval($_GET['number']) - 1) * 7;
$date = new DateTime('2000-01-01');
$date->add(new DateInterval("P$daysD"));
0 голосов
/ 28 декабря 2011

Использование:

$date = new DateTime('@'.strtotime( $_GET['number'] . ' week'));

, где $_GET['number'] - натуральное число.

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

Вы также можете взглянуть на mktime ()

http://php.net/manual/en/function.mktime.php

Вы можете преобразовать первичную дату в метку времени и добавить 7 дней:

$new_date = mktime(0, 0, 0, 11, (28 + intval($_GET['number'])), 2011);
$visible_date = date('Y-m-d', $new_date);
echo $visible_date;
0 голосов
/ 28 декабря 2011

Используйте add и sub для сложения / вычитания дней.

$date = new DateTime("2011-11-28");
$num = $_GET['number'];
$interval = new DateInterval('P'.$num.'W');
$date->add($interval);

Или вы можете использовать modify

$date = new DateTime("2011-11-28");
$num = $_GET['number'];
$date->modify(($num>0 ? '+' : '').$num.' weeks');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...