2017-11-29 12 views
0

コードPHP - 入力された場合、私は次の出力を得る次木曜日の日付

$order_dispatch_date = DateTime::createFromFormat('Ymd', $inc['order_dispatch_date']); 
$order_dispatch_date = $order_dispatch_date->format('Ymd'); 

$order_collection = date('Ymd', strtotime('next thursday', $order_dispatch_date)); 

$order_collection = new DateTime($order_collection); 

echo '['.$order_collection->format('d/m/Y') . ' - ' . $order_dispatch_date . ' - ' . gettype($order_dispatch_date) . ' ] '; 

を取得:20171128

[29/08/1970 - 20171128 - string ] 

1970年8月29日示す第1の出力ではなく、なぜ私の質問があります2017年11月20日より?

+1

を参照してください。 strtotimeは日付文字列ではなく、2番目のパラメータとしてタイムスタンプをとります。strtotime()も同様にそれを追加すればうまくいくはずです。 – DevionNL

+0

'$ d =新しいDateTime( '次の木曜日')'だけではないのはなぜですか? – CD001

答えて

0

基本的には:

$order_collection = date('Ymd', strtotime('next thursday', strtotime($order_dispatch_date))); 

そして、それは:)

1

停止はあなたが同じことを再使用している場合は特に、オブジェクト、文字列とそんなにタイムスタンプ間前後のものを変更し動作するはずです変数。それは不必要に従うことが難しいです。

あなたはYmdフォーマットされた文字列を持っている、と先に進むためのバック同等の文字列木曜日をしたい、ちょうどこれを使用する場合:あなたは1970年の日付を取得している場合は

$inc['order_dispatch_date'] = '20171128'; 

$order_dispatch_date = DateTime::createFromFormat('Ymd', $inc['order_dispatch_date'])->modify('next thursday'); 

echo $order_dispatch_date->format('Ymd'); 
// 20171130 

は、それをhttps://eval.in/909998

関連する問題