web-dev-qa-db-ja.com

PHP変換後に '1970-01-01'を示す日付

日付形式がdd/mm/yyyyのフォームがあります。データベースを検索するために、日付形式をyyyy-mm-ddに変換しました。しかし、私がecho itすると、1970-01-01と表示されます。 PHPコードは以下のとおりです。

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

なぜそれが起こっているのですか? yyyy-mm-ddにフォーマットするにはどうすればよいですか?

22
AssamGuy

置換/ with -

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
59
Cyclonecode

1970年1月1日は、いわゆるUnixエポックです。 nix時間 のカウントを開始した日付です。この日付を戻り値として取得する場合、通常、日付をUnixタイムスタンプに変換すると、ゼロに近い結果が返されたことを意味します。そのため、日付の変換は成功しません。おそらく、間違った入力を受け取ったためです。

つまり、strtotime($date1)は0を返します。つまり、$date1は、サポートされていない形式のstrtotime関数で渡されます。

30
Oldskool
$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O/P:指定された日付が間違っています

1
Kaushal Roy

PHP 5.3以降では以下のコードを使用:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

PHP 5.2の場合は以下のコードを使用:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');
0
Dayz

別の回避策:

日付ピッカーの変換dd/mm/yyyyからyyyy-mm-dd

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;
0
_$date1 = $_REQUEST['date'];

if($date1) {
    $date1 = date( 'Y-m-d', strtotime($date1));
} else {
    $date1 = '';
}
_

_$date_に有効なdate()がある場合、これは適切に表示され、ない場合は何も表示されません。
問題を解決しました。

0
Tye Lucas