2017-11-07 9 views
-2

2日間の日数を調べるには日付はありません PHPを使用していますか?週2日の間の日数を調べる方法は?

私は2つの日付間の日数を取得する方法を知っていますが、私の入力値は日の名前です(日付無視)。

入力/出力:

WednesdaySaturday戻る3

SundayWednesday戻る3

答えて

0

あなたの仕事は、日付を要求していないようですまったく機能しません。単純な検索配列で十分です。

コード:(Demo

function daysUntil($start,$end){ 
    $lookup=['Sunday'=>0,'Monday'=>1,'Tuesday'=>2,'Wednesday'=>3,'Thursday'=>4,'Friday'=>5,'Saturday'=>6]; 
    $days=$lookup[$end]-$lookup[$start]; 
    return "From $start to $end: ".($days<1?$days+7:$days); 
} 

echo daysUntil('Wednesday','Saturday'),"\n"; // Thursday, Friday, Saturday 
echo daysUntil('Monday','Friday'),"\n";  // Tuesday, Wednesday, Thursday, Friday 
echo daysUntil('Thursday','Thursday'),"\n"; // [assumed next week] 
echo daysUntil('Friday','Monday'),"\n";  // Saturday, Sunday, Monday 
echo daysUntil('Saturday','Sunday'),"\n";  // Sunday 
echo daysUntil('Sunday','Saturday'),"\n";  // Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 
echo daysUntil('Sunday','Wednesday');   // Monday, Tuesday, Wednesday 

出力:

From Wednesday to Saturday: 3 
From Monday to Friday: 4 
From Thursday to Thursday: 7 
From Friday to Monday: 3 
From Saturday to Sunday: 1 
From Sunday to Saturday: 6 
From Sunday to Wednesday: 3 

それとも、4機能を持つルックアップ列を呼び出して置き換えることができます。

$days=date('w',strtotime($end))-date('w',strtotime($start)); 

http://sandbox.onlinephpfunctions.com/code/b349aae527654d25a3dbd92df2a3dde386ca423a

+0

右 私は別の答えをテストするが、間違った結果を与える – predactor

+0

私は昨日別の1つを書いたが、あなたのことは簡単である – predactor

+0

助けてくれてありがとう。 (あなたの質問にはいつもコーディングの試みを含めるようにしてください - これはあなたの質問の下落を避けるでしょう) – mickmackusa

3

PHP date_diff()関数(docs)を使用。

明確化パー
$datetime1 = date_create($date_1); 
$datetime2 = date_create($date_2); 

$interval = date_diff($datetime1, $datetime2); 

echo $interval->format('%d'); // For days 

、あなたはそれを計算するために、任意の土曜日と水曜日を作成することができます。

$datetime1 = date_create(date('Y-m-d',strtotime('wednesday'))); 
$datetime2 = date_create(date('Y-m-d',strtotime('saturday'))); 

$interval = date_diff($datetime1, $datetime2); 

echo $interval->format('%d'); // For days 

は「3」を返しますが、あなたはそれを実行したときに依存します。

+0

私は数時間前に私の正しい答えにdownvoteを受けるので、少し不機嫌そうでなければならないと思います。私の申し訳ありませんが、私は正しい結果を提供していないので、この回答をdownvoteする必要があります。 https://3v4l.org/BO44o – mickmackusa

0

あなたは新しいDateTimeクラスに解析するために一日の名前を書くことができます。

<?php 
    $datetime1 = new DateTime('Sunday'); 
    $datetime2 = new DateTime('Wednesday'); 
    $interval = $datetime1->diff($datetime2); 
    echo $interval->format('%R%a days'); 
    ?> 

また1つのラインバージョンの下:

echo (new DateTime('Sunday'))->diff(new DateTime('Wednesday'))->format('%a days'); 
+0

私の謝罪、私はちょうど数時間前に私の正解にdownvoteをコッピングした後、少し不満を覚える必要があります。この答えは、望ましい結果を提供しません。 https://3v4l.org/lhVOu – mickmackusa

0
public function numOfDaysBetween($start,$end) 
{ 
$days=[0=>'Saturday',1=>'Sunday',2=>'Monday',3=>'Tuesday',4=>'Wednesday',5=>'Thursday',6=>'Friday']; 
$index_start=array_search($start, $days); 
    $index_end=array_search($end, $days); 
    if($index_start==$index_end) 
    { 
     return 7; 
    }else if($index_start<$index_end) 
    { 
     return $index_end-$index_start; 
    }else 
    { 
     return 7-($index_start-$index_end); 
    } 

}

+0

この回答は私にとってはむしろ恥ずかしいようです。これはあまりにも盗作に似ています。この回答は、私の容認された解決策の効率の悪いノックオフです。それは私の8時間後に掲示され、そのページに価値がない。 – mickmackusa

関連する問題