2017-04-18 130 views
0

我有個約會2015-12-16獲得一週的第一天的日期在給定日期PHP

我想在第一天的日期之日起我的日期的當前周

這裏2015-12-16是一年中的第51周,那麼我想要得到本週的第一天的日期51(2015-12-14這裏)

我怎麼能這樣做? 謝謝

編輯:當有53個星期,今年就必須努力(比如在2015年爲例)

+0

你可以與我們分享你的代碼嗎? – RobFos

+3

[谷歌會做的伎倆](http://stackoverflow.com/questions/1897727/get-first-day-of-week-in-php) – Thoby

+0

@RobFos沒有工作代碼 – RomMer

回答

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

+0

我正在測試它。將讓你保持聯繫 – RomMer

+0

@RomMer記住,從星期一開始使用此代碼的週數。 – apokryfos

+0

是的,看到了,但這是我需要我只是有最後一個問題 它奇怪的工作原理2016年 2016年1月的前3天實際上是在2015年的第53周 我怎麼能管理呢? – RomMer

0
$date = new \DateTime('2015-12-16'); 
echo $date->modify('last sunday +1 day')->format('Y-m-d'); 

這得到,如果算上週一至週日,本週開始的。

相關問題