web-dev-qa-db-ja.com

PHPで当日の日付を取得する

PHPで当日の日付を取得したい。私が試したものはここにあります...

echo $x."<br>";
echo date("D",$x)."<br>";

しかし、出力は

21-02-10
Thu

それは正しい日付を与えていますが、正しい日の値ではありません。

私が欲しいのは、週のどの曜日にも生成できる、今週の月曜日の日付です。だから私がやったことは、今日の日をとり、(Mon、Tue .... Sun)と比較して、それぞれを使用してタイムスタンプを作成しています

case "Mon":

$startdate1=date("d-m-y");
$parts = explode('-',$startdate1);
$startdate2 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+1),$parts[2]));
$startdate3 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+2),$parts[2]));
$startdate4 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+3),$parts[2]));
$startdate5 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+4),$parts[2])); 
$startdate6 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+5),$parts[2]));
$startdate7 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+6),$parts[2]));

$dates=array(1 => $startdate1,$startdate2,$startdate3,$startdate4,$startdate5,$startdate6,$startdate7);
$i=1;
while( $i <= 7 )
{
echo $dates[$i];
$i++;
}
break;

$ dateは、返される必要がある今日に対応する最後の配列です。この操作を行う他のより良い方法はありますか?.

13
anurag-jain

私がそれを解決するために行ったのは、日付関数で( 'd-m-y')の代わりに日付形式( 'd-m-Y')が使用され、これが問題の原因でした。したがって、strtotimeはフォーマットを受け入れ、正しい結果を返しました。

$t=date('d-m-Y');
echo date("D",strtotime($t));
3
anurag-jain

私はこれを当日取得するために試しました。

echo date('l'); // output: current day.
24
chanchal

これはどう:

//today is monday
if (1 == date('N')){
    $monday = time();
}else{
    $monday = strtotime('last Monday');
}

for ($i = 0; $i < 7; $i++){
    echo date('d-m-Y', $monday) . '<br>';
    $monday = strtotime('tomorrow', $monday);
}

最初に月曜日を見つけます。今日でない場合は、7つの日付を印刷します

5

私が欲しいのは、週のどの曜日にも生成できる、今週の月曜日の日付です。

それがあなたの望みです。 $mdayは今週の月曜日の月日です。それがポジティブでないかどうか気にしないでください、mktimeはその権利を処理します。 $mondayには、月曜日の午前0時のタイムスタンプがあります。

$now = getdate();
$mday = $now['mday'] - ($now['wday'] + 6) % 7;
$monday = mktime(0, 0, 0, $now['mon'], $mday, $now['year']);
echo(date('d-m-y', $monday));
3
codeholic

私は関数の日付とパスを使用して、現在の日付を参照する "D"を使用しています。

 $today = date("D"); 

現在の日付に関する完全な情報を取得する

  $today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
2
Mustafa ELnagar

私が試したものはここにあります...

echo date("D",$x)."<br>";

dateは、2番目のパラメーターとしてタイムスタンプ(int)値を想定しています。 $xは、あいまいな日付形式を含む文字列です。最初にstrptimeまたはstrtotimeを使用してその日付をタイムスタンプに変換し、date関数を正しく使用して正しい日の値を取得します。

2番目の部分については、正しい月曜日、火曜日などを計算するために曜日名を確認する必要はありません(すべきではありません)。より効率的なアプローチはたとえばstrtotimeを取得するにはlast Mondayなど.

2
poke

文字列をタイムスタンプとして渡す可能性があります

echo $x."<br>";
echo date("D",$x)."<br>";

削除する $xとすると、正しい日が出力されるか、次のように変更されます

$x = '21-02-2010';
echo date('D', strtotime($x));
1
Gordon