问题
我使用以下代码来获取下周的日期和第二周的日期。它适用于前几个记录,但后来开始给予年份 1970 。
如果开始日期为 12/01/2013 ,则会显示我的结果:
下周: 2013年1月19日
第二周: 26/01/2013
但是在日期为 16/05/2013 的另一条记录中,它会显示以下内容
下周: 08/01/1970
第二周: 15/01/1970
请指导我可能出错的地方?
代码
//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;
答案 0 :(得分:5)
您使用的是错误的格式日期。检查strtotime
documentation:
通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。
进一步检查文档:
不建议使用此函数进行数学运算。最好在PHP 5.3及更高版本中使用
DateTime::add()
和DateTime::sub()
,或在PHP 5.2中使用DateTime::modify()
。
答案 1 :(得分:4)
我建议你使用DateTime对象,最好是操作日期(使用DateInterval对象添加和减去另一个日期很容易)
<?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
参考文献:
答案 2 :(得分:0)
请尝试此
$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);