Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,MySQL日期计算_Php_Mysql_Date - Fatal编程技术网

PHP,MySQL日期计算

PHP,MySQL日期计算,php,mysql,date,Php,Mysql,Date,我正在尝试添加到目前为止的几个星期,这两个星期都将从数据库中获取,我成功地获取了所需的两个星期,但我不知道如何进行计算。到目前为止,我尝试了“strotime”,但它给了我一些奇怪的结果 <?php $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "database"; // C

我正在尝试添加到目前为止的几个星期,这两个星期都将从数据库中获取,我成功地获取了所需的两个星期,但我不知道如何进行计算。到目前为止,我尝试了“strotime”,但它给了我一些奇怪的结果

    <?php 

$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
    
    $sql = "SELECT startdate  // <- DATE WE WANT TO ADD WEEKS TO
            FROM database
            ORDER BY id 
            DESC limit 1";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
      $recoredDate = $row["startdate"];
    

      
    $sql2 = "SELECT ready // <- INT NUMBER REPRESENT NUMBER OF WEEKS
            FROM crop
            ORDER BY id 
            DESC limit 1";
    $result2 = $conn->query($sql2);

    if ($result2->num_rows > 0) {
    // output data of each row
    while($row = $result2->fetch_assoc()) {
      $weeks = $row["ready"];

      }
    } else {
      echo "No Result";
    }
?>

 <p>
<div align=center>

<?php echo "$recoredDate";?> - Date from DB
<p>
<?php echo "$weeks";?> Weeks to add
<p>
<?php echo "$recoredDate",strtotime ("+ $weeks week");?> Wierd result 
</div>
</p>


<?php
    }
    }
?>


-来自DB的日期

要添加的周数

韦尔德结果

我该怎么做才对呢?理想的结果应该是打印$recoredate+$weeks。

尝试

$str = strtotime("+".$weeks." weeks", strtotime($recoredDate));
echo date("Y-m-d", $str);

如果没有第二个参数(也是timestamp),strotime将返回当前时间戳,在您的示例中,添加了x周。如果要将周添加到日期,然后以某种格式使用日期,首先必须将周添加到日期的时间戳值,然后使用date()函数对其进行格式设置。

可以先将周转换为天。考虑到为期7天的一周,你会有如下情况:

<?php
  $date = "2019-05-10";  // Your date from database
  $weeks = 3; // Your number of weeks from database
  $days = $weeks * 7; // Transform weeks to days

  $newDate = date('Y-m-d', strtotime($date. ' + '.$days.' days')); 
  echo $newDate;
 ?>

此外,我建议您避免在while循环中放置SQL查询。这是坏习惯


谢谢汤姆·利马,很好的例子!我已经使用了上面的代码,因为代码行数较少,但谢谢!我希望这对其他人也是一个很好的例子!