2017-02-15 38 views
2

入力日の後に2番目の月曜日はどうすれば得ることができますか? は、私は解決策を持っているが、私はそうするいくつかの方法を提案してくださいPHPの次の月曜日を取得

現実的ではない
$date = new DateTime(); 
$date->modify('next monday'); 
$next_monday = $date->format('Y-m-d'); 
$date = new DateTime($next_monday); 
$date->modify('next monday'); 
$next_monday = $date->format('Y-m-d'); 

います。

+0

[のstrtotime()](http://php.net/strtotime) –

+1

かについて$日付=新しいのDateTime( '次月曜日')を参照してください。 $ date-> modify( '+ 7日'); ? –

答えて

1

あなたDateTimeオブジェクトのmodify方法はstrtotimeがないこと、引数の同じ型を取ります。すでに'next monday'を使用していますが、代わりに'second monday'を使用するだけです。

$date->modify('second monday'); 
echo $date->format('Y-m-d'); 

また、あなたがこれを知らなかった場合には、DateTimeの方法のいくつかを連鎖させることができます:あなたはそれがあまりにも高価であると思われる場合

echo $date->modify('second monday')->format('Y-m-d'); 
+0

動作していることを確認しましたか? –

+1

@ ma_dev_15はい、それは私のために働いた。あなたのために働かなかったのですか? –

0

おそらく別の方法がありますが、使用するMomentPHP今日の週の開始日に1日を追加して(月曜日に取得する)、2週間追加すると2番目の次の月曜日になります。そのような
何か:

<?php 
$m = \Moment\moment(); 
$sunday = $m->startOf('week'); 
$monday = $sunday->addDays(1); 
$2nextMonday = $monday->addWeeks(2); 
2

あなたはstrtotime()でそれを行うことができますが、あなたはdateDateIntervalも使用できます。

$date = new DateTime('2017-02-15 13:03:00'); 
// move back to past Monday 
$num = (date("w", $date->getTimestamp())) - 1; 
$offset = new DateInterval("P{$num}D"); 
$offset->invert = 1; 
// move forward two weeks 
$interval = new DateInterval('P2W'); 
$next_second_monday = $date->add($offset)->add($interval); 

そして$next_second_mondayは次のようになります。

DateTime Object 
(
    [date] => 2017-02-27 13:03:00.000000 
    [timezone_type] => 3 
    [timezone] => UTC 
) 
関連する問題