加上带有GET的PHP日期的周?

时间:2011-12-28 14:49:47

标签: php datetime

我有网址:

http://www.mysite.com/

这是:

$date = new DateTime("2011-11-28"); 
这告诉我:

  

2011-11-28

我想添加此网站按钮PREVIOUS和NEXT。 如果我点击下一步,那么我有网址:

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

现在这告诉我:

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

我有按钮PREVIOUS(http://www.mysite.com/number/1)和NEXT(http://www.mysite.com/next/3) 等

我如何修改

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

使用$ _GET ['number']?我已经修改了2011-11-28间隔7天!

6 个答案:

答案 0 :(得分:1)

查看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。

答案 1 :(得分:0)

使用addsub添加/减去天数。

$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');

答案 2 :(得分:0)

您还可以查看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;

答案 3 :(得分:0)

使用:

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

其中$_GET['number']是自然数。

答案 4 :(得分:0)

试试这个:

$days = (intval($_GET['number']) - 1) * 7;
$date = new DateTime('2000-01-01');
$date->add(new DateInterval("P$daysD"));

答案 5 :(得分:-1)

我喜欢strtotime很多:) 它的工作原理如下:

$date = new DateTime("2011-11-28"); 
$prevWeek = strtotime('-1 week',$date);
$nextWeek = strtotime('+1 week',$date);