我可以将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');
?>
如果有人能证实这是正确的,那就太好了。