php将x周添加到一个日期,然后找到下一个给定的日期


php add x weeks to a date and then find the next given day

我可以将x周添加到我的日期

//$ultima_azione <--- 2015/07/15
//$data['intervallo'] <---- 5
$mydate = date("Y-m-d",strtotime($ultima_azione." +".$data['intervallo']." weeks"));

现在我怎么能从那一周开始算一天呢示例:

//$mydate + "next Monday" -----> final date

这就像是,如果今天是星期一,我加上几周跳到另一个星期一,然后我选择下一个星期,那么这个星期不需要更改

最简单的方法是使用strtotime。它可以根据delta的文本表示进行日期计算:

$mydate = strtotime('+3 weeks');

它还接受第二个参数,这是进行计算时开始的时间戳,因此在您获得周的偏移量后,您可以将新日期传递给第二个计算:

// Get three weeks from 'now' (no explicit time given)
$mydate = strtotime('+3 weeks');
// Get the Monday after that.
$mydate = strtotime('next Monday', $mydate);

有关可以使用的符号的更多示例,请参阅strtotime文档。

对于任何日期和时间逻辑,我强烈建议使用PHP内置的DateTime类。它是一个比旧的日期和时间函数更好的API,并且创建了更干净、更容易阅读的代码。

例如:

// Current date and number of weeks to add
$date = '2015/07/15';
$weeks = 3;
// Create and modify the date.
$dateTime = DateTime::createFromFormat('Y/m/d', $date);
$dateTime->add(DateInterval::createFromDateString($weeks . ' weeks'));
$dateTime->modify('next monday');
// Output the new date.
echo $dateTime->format('Y-m-d');

参考文献:

  • 日期时间
  • 日期时间::createFromFormat
  • 日期时间::添加
  • DateTime::修改
  • 日期间隔::createFromDateString
  • DateTime::格式

你在找这样的东西吗?

$today = time();
$weeks = 2;
// timestamp 2 weeks from now
$futureWeeks = strtotime("+ ".$weeks." weeks");
// the next monday after the timestamp date
$futureMonday = strtotime("next monday",$futureWeeks);
echo date("Y-m-d", $futureMonday);
// or in one line
echo date("Y-m-d", strtotime("next monday", strtotime("+ ".$weeks." weeks")));

PHP使用unix时间戳进行日期计算。函数为date((和strtotime((,使用时间戳作为可选的第二个参数。这是用于格式化和计算的参考。如果没有向函数传递时间戳,则使用当前时间戳(time(((。

这里有答案。这将显示每两周的下周三,第一个开始日期将是10日。

我还添加了一个预计交付时间,该日期后6周。

We will be placing our next order for this on:
    <?php
    $date = '2020/05/26';
    $weeks = 2;
    $dateTime = DateTime::createFromFormat('Y/m/d', $date);
    $dateTime->add(DateInterval::createFromDateString($weeks . ' weeks'));
    $dateTime->modify('wednesday');
    echo $dateTime->format('d/m/Y');
    ?>
Expected delivery for the next order will be:
    <?php
    $date = '2020/05/26';
    $weeks = 2;
    $dateTime = DateTime::createFromFormat('Y/m/d', $date);
    $dateTime->add(DateInterval::createFromDateString($weeks . ' weeks'));
    $dateTime->modify('+42 days next wednesday');
    echo $dateTime->format('d/m/Y');
    ?>

如果有人能证实这是正确的,那就太好了。

相关文章: