在下面这个函数中,我在迭代中使用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();
}
答案 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)
DateTime
和DateInterval
类是理想的选择。
$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');