Php 我怎样才能得到下周的约会?

Php 我怎样才能得到下周的约会?,php,Php,问题 我正在使用下面的代码获取下周的日期和第二周的日期。它在最初的几张唱片上运行良好,但后来它开始给出年份1970 如果开始日期为2013年1月12日,则会显示正确的结果,即: 下周:2013年1月19日 第二周:2013年1月26日 但在另一个日期为2013年5月16日的记录中,它显示了以下内容 下周:1970年1月8日 第二周:1970年1月15日 请告诉我哪里可能出错 代码 //Date of when game started $starts_on = '12/01/20

问题

我正在使用下面的代码获取下周的日期和第二周的日期。它在最初的几张唱片上运行良好,但后来它开始给出年份1970

如果开始日期为2013年1月12日,则会显示正确的结果,即:

下周:2013年1月19日

第二周:2013年1月26日

但在另一个日期为2013年5月16日的记录中,它显示了以下内容

下周:1970年1月8日

第二周:1970年1月15日

请告诉我哪里可能出错

代码

    //Date of when game started
    $starts_on = '12/01/2013';    

    //Next week's date from start date
    $next_week = strtotime(date("d/m/Y", strtotime($starts_on)) . "+1 week");
    $next_week = date('d/m/Y', $next_week);

    //Second week's date from start date
    $second_week = strtotime(date("d/m/Y", strtotime($starts_on)) . "+2 week");
    $second_week = date('d/m/Y', $second_week);

    echo $starts_on.", ".$next_week.", ".$second_week;

您使用了错误的日期格式。请检查以下内容中的注释:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式的日期歧义:如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式

进一步检查文档:

不建议将此函数用于数学运算。最好在PHP5.3及更高版本或PHP5.2中使用and


我建议您使用DateTime对象,更好地操作日期(使用对象DateInterval可以很容易地从另一个对象添加和删除日期)

参考资料:

请试试这个

$dt=new DateTime();
//使用当前时间创建DateTime对象
$dt->setISODate($dt->format('o'),$dt->format('W')+1);
//将对象设置为下周的星期一
$periods=新的日期周期($dt,新的日期间隔('P1D'),6);
//获取从周一到+6天的所有1天周期
$days=迭代器到数组($periods);
//将DatePeriod对象转换为数组
回声“;
打印(天);

您是否检查了每次检索时
$starts\u on
是否包含正确的日期?是的!在第二条记录中,当未来日期出现错误时,因为开始日期是2013年5月16日,您使用的是
strotime()
error.PHP会将其解释为月/日/年,而不是日/月/年()。请将此归咎于我们荒谬的日期格式。LSB,MSB,不,让我们试试中间的,最少的,最多的,这样才有意义。
<?php
  $date = new DateTime("2013-01-12");
  //add one week to date
  echo $date->add(new DateInterval('P1W'))->format('Y-m-d');
  //add one week to date
  echo $date->add(new DateInterval('P1W'))->format('Y-m-d');
?>
2013-01-19
2013-01-26
$dt = new DateTime();
// create DateTime object with current time
$dt->setISODate($dt->format('o'), $dt->format('W')+1);
// set object to Monday on next week
$periods = new DatePeriod($dt, new DateInterval('P1D'), 6);
// get all 1day periods from Monday to +6 days

$days = iterator_to_array($periods);
// convert DatePeriod object to array
echo "<pre>"; 
print_r($days);