我有一个约会2015-12-16
我想知道我当前一周的第一天的日期
这里2015-12-16
是在一年的第51周,然后我想得到第51天的第一天的日期(2015-12-14
在这里)
编辑:当一年有53周时(例如2015年),它必须有效。
答案 0 :(得分:3)
您可以执行以下操作:
$dateTime = new DateTime("2015-12-16");
$weekNo = $dateTime->format("W");
$newDate = new DateTime();
$newDate->setISODate($dateTime->format("Y"), $weekNo);
示例:
http://sandbox.onlinephpfunctions.com/code/281a1ac298bfee8be421e333e4b7e92c6bb44d65
由于在某些情况下上述情况有点偏差,因此更可靠:
$dateTime = new DateTime("2016-01-01");
$dateTime->sub(new DateInterval("P".($dateTime->format("w")-1)."D")); //Since the weekdays are 1-based.
实施例: http://sandbox.onlinephpfunctions.com/code/c5cb0f077fa77974d977ddbffa6bc0b61f9d7851
答案 1 :(得分:0)
$date = new \DateTime('2015-12-16');
echo $date->modify('last sunday +1 day')->format('Y-m-d');
如果算上星期一到星期天,这将在本周开始。
答案 2 :(得分:0)
尝试一下:
date('Y-m-d', strtotime('This week', strtotime('2015-12-16')));