0

DB のタイムスタンプから日付を取得する次のコードがあり、それを特定の日付と比較し、それに応じて変数を何らかの値に設定します。

    $leavedate=$this->leavedate;
    $leavestamp=strtotime($leavedate[0]['LoppumisPvm']);
    $leave=date('d M',$leavestamp);
    echo "the leave is: ".$leave; //this one prints: 12 Apr

        $leavequarter="";
       if(strtotime($leave)>= strtotime('01 Jan') && strtotime(($leave)<= strtotime('15 Jan'))){$leavequarter=1;}
       elseif(strtotime($leave)>= strtotime('01 Apr') && strtotime(($leave)<= strtotime('15 Apr'))){$leavequarter=2;}
       elseif(strtotime($leave)>= strtotime('01 Jul') && strtotime(($leave)<= strtotime('15 Jul'))){$leavequarter=3;}
       elseif(strtotime($leave)>= strtotime('01 Oct') && strtotime(($leave)<= strtotime('15 Oct'))){$leavequarter=4;}


    echo $leavequarter;

最初のエコーは機能し、12 Apr基本的に2番目のifステートメントに収まるはずのようなものを取得しますが、2番目のエコーは何も出力せず、echo "testifステートメントに " のようなものを入れても何も実行されません。私は何か間違っていますか?

4

4 に答える 4

0

構文ミスで 3 番目の strtotime got double (( how 2 番目の状態をカバーする

   if(strtotime($leave)>= strtotime('01 Jan') && strtotime($leave)<= strtotime('15 Jan')){$leavequarter=1;}
   elseif(strtotime($leave)>= strtotime('01 Apr') && strtotime($leave)<= strtotime('15 Apr')){$leavequarter=2;}
   elseif(strtotime($leave)>= strtotime('01 Jul') && strtotime($leave)<= strtotime('15 Jul')){$leavequarter=3;}
   elseif(strtotime($leave)>= strtotime('01 Oct') && strtotime($leave)<= strtotime('15 Oct')){$leavequarter=4;}
于 2013-04-24T12:11:03.027 に答える
0

まず、すべてを strtotime で行うわけではありません。これはリソースを消費し、ロケールに依存します。

日付機能を使用することをお勧めします。

$leavedate = $this->leavedate;
$leavestamp = strtotime($leavedate[0]['LoppumisPvm']);
$leave = date('d M', $leavestamp);
echo "the leave is: " . $leave; //this one prints: 12 Apr

$leavequarter = "";
if (date('m', $leavestamp) == 1 && date('d', $leavestamp) >= 1 && date('d', $leavestamp) <= 15)
{
    $leavequarter = 1;
}
elseif (date('m', $leavestamp) == 4 && date('d', $leavestamp) >= 1 && date('d', $leavestamp) <= 15)
{
    $leavequarter = 2;
}
elseif (date('m', $leavestamp) == 7 && date('d', $leavestamp) >= 1 && date('d', $leavestamp) <= 15)
{
    $leavequarter = 3;
}
elseif (date('m', $leavestamp) == 10 && date('d', $leavestamp) >= 1 && date('d', $leavestamp) <= 15)
{
    $leavequarter = 4;
}


echo $leavequarter;

しかし、あなたは何をしようとしていますか?年の四半期を取得したいと思いますが、これは1月1日から1月15日までの結果のみを提供し、4月、7月、10月についても同じです。

正直なところ、これはあなたが望むものだと思います:

$leavedate = $this->leavedate;
$leavestamp = strtotime($leavedate[0]['LoppumisPvm']);
$leave = date('d M', $leavestamp);
echo "the leave is: " . $leave; //this one prints: 12 Apr

$leavequarter = (int) ((date('m', $leavestamp) - 1) / 3) + 1;
echo $leavequarter;
于 2013-04-24T12:14:54.587 に答える
0

このコードを試してください:

if((strtotime($leave)>= strtotime('01 Jan')) && (strtotime($leave)<= strtotime('15 Jan'))){$leavequarter=1;}
    elseif((strtotime($leave)>= strtotime('01 Apr')) && (strtotime($leave)<= strtotime('15 Apr'))){$leavequarter=2;}
    elseif((strtotime($leave)>= strtotime('01 Jul')) && (strtotime($leave)<= strtotime('15 Jul'))){$leavequarter=3;}
    elseif((strtotime($leave)>= strtotime('01 Oct')) && (strtotime($leave)<= strtotime('15 Oct'))){$leavequarter=4;}   
echo $leavequarter;
于 2013-04-24T12:22:58.210 に答える