110

から日付を変換しようとしていますdd/mm/yyyy => yyyy-mm-dd。mktime() 関数やその他の関数を使用していますが、機能しないようです。explode区切り文字として使用して元の日付を取得でき'/'ましたが、形式を変更'/'して'-'.

どんな助けでも大歓迎です。

4

5 に答える 5

309

m/d/yまたは形式の日付はd-m-y、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ ( /) の場合、アメリカ人m/d/yと見なされます。一方、セパレータがダッシュ ( -) またはドット ( .) の場合は、ヨーロッパd-m-y 形式が想定されます。詳細はこちらをご覧ください

デフォルトの日付関数を使用します。

$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );

EDIT私はそれをテストしましたが、どういうわけか、PHPはdd/mm/yyyy形式ではうまく機能しません。ここに別の解決策があります。

$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));
于 2012-04-24T22:38:01.493 に答える
116

使ってみてDateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');

出力

2012-04-24

編集:

日付が 2010 年 5 月 4 日 (D/M/YYYY または DD/MM/YYYY の両方) の場合、以下のメソッドを使用して 5/4/2010 を 2010-4-5 (両方とも YYYY-MM-DD またはYYYY-MD) 形式。

$old_date = explode('/', '5/4/2010'); 
$new_data = $old_date[2].'-'.$old_date[1].'-'.$old_date[0];

出力:

2010-4-5
于 2012-04-24T22:46:46.440 に答える
37

date() を使用しない別のソリューションを次に示します。それほど賢くない:)

$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
于 2012-04-24T22:53:06.143 に答える
5

これを行う:

date('Y-m-d', strtotime('dd/mm/yyyy'));

ただし、「dd/mm/yyyy」が実際の日付であることを確認してください。

于 2012-04-24T22:39:19.763 に答える
1

すばらしい回答が見られるので、ここで繰り返す必要はありません。いくつかのアドバイスを提供したいと思います。

人間が判読できる日付形式の代わりに Unix タイムスタンプ整数を使用して時間を内部的に処理し、PHP のdate()関数を使用してタイムスタンプ値を人間が判読できる日付形式に変換してユーザーに表示することをお勧めします。これを行う方法の大まかな例を次に示します。

// Get unix timestamp in seconds
$current_time = date();

// Or if you need millisecond precision

// Get unix timestamp in milliseconds
$current_time = microtime(true);

次に$current_time、アプリで必要に応じて使用し (格納、加算、減算など)、ユーザーに日付値を表示する必要がある場合は、使用date()して目的の日付形式を指定できます。

// Display a human-readable date format
echo date('d-m-Y', $current_time);

このようにして、日付はコンパクトでタイムゾーンに依存しない (常に UTC) プログラミング言語とデータベースで広くサポートされている標準化された形式 (Unix タイムスタンプ) になるため、日付形式、変換、およびタイムゾーンを扱う頭痛の種を回避できます。 .

于 2012-04-24T23:03:36.133 に答える