如何从今天开始计算5周的日期

时间:2015-12-31 10:57:16

标签: php date

在下面这个函数中,我在迭代中使用from_date和to_date调用函数。这里为每次迭代我都在更新日期值,当涉及到$to_date时,我正在计算从现在开始返回日期的日期。例如,sharing_basis返回值为2周,5周....

例如: 我使用$to_date = date("Y-m-d", strtotime("+".$sharing_basis));来获取$ to_date的值。 to_date从现在起返回给定周数的日期。

但是每次都会返回相同的日期。我想根据$to_date

计算$from_date

让我们说, 第一次迭代

$from_date = 2016-12-31
$to_date = $to_date = date("Y-m-d", strtotime("+5 weeks"));

我想从$ from_date获取5周的日期。

我该怎么做?

function createSharingdates($productId){
    $startdate = getStartdate($productId);
    $sharing_basis = getSharingBasis($productId);
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT user_id FROM orders WHERE product_id='$productId' ORDER BY order_datetime";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {        
        $user_id = $row["user_id"];
        $from_date = $startdate;
        foreach ($user_id as $userid) {
            $to_date = date("Y-m-d", strtotime("+".$sharing_basis));
            addSharingDates($product_id,$userid,$fromdate,$to_date);
            $from_date = $to_date
        }   
    } else {            
        return false;       
    }
    $conn->close(); 
}

4 个答案:

答案 0 :(得分:1)

试试这个

$from_date = "2014-12-31";
echo date('Y-m-d', strtotime('+6 days', strtotime($from_date)));

答案 1 :(得分:0)

最短的方法是使用DateInterval类。

<?php
$date = new DateTime();
$date->add(new DateInterval('P5W'));
echo $date->format('Y-m-d');

输出:

2016-02-04

答案 2 :(得分:0)

$from_date = "2016-12-31";
$to_date = date("Y-m-d", strtotime("$from_date +5 weeks"));

这个有效。

答案 3 :(得分:0)

DateTimeDateInterval类是理想的选择。

$start=date( 'Y-m-d', strtotime('2016-12-31') );

$timezone=new DateTimeZone('Europe/London');
$interval=new DateInterval('P5W');

$date=new DateTime( $start, $timezone);
$future=$date->add( $interval );

echo $future->format('Y-m-d');