日付をyyyy-mm-ddからdd-mm-yyyyに変換しようとしています(ただしSQLでは不可)。しかし、date関数がどのようにタイムスタンプを必要とするのか私にはわかりません。また、この文字列からタイムスタンプを取得することはできません。
これはどのように可能ですか?
もしstrtotime変換を避けたいのなら(例えばstrtotimeはあなたの入力を解析することができません)、あなたは使うことができます、
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
または、同等に
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
最初に$ dateStringの形式を指定しています。次に、$ newDateStringの形式を指定しています。
またはsource-formatが常に "Y-m-d"(yyyy-mm-dd)の場合は、 DateTime :を使用してください。
<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
つかいます:
implode('-', array_reverse(explode('-', $date)));
日付変換のオーバーヘッドがなければ、それがそれほど重要になるかどうかはわかりません。
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
このコードはすべての日付フォーマットに対して機能します。
あなたはあなたの古い日付フォーマットのためにそのような$ 3- $ 1- $ 2のような置換変数の順序を変えることができます。
また別のあいまいな可能性:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
私はそれを使うかどうかわかりませんが、それでも:)
$timestamp = strtotime(your date variable);
$new_date = date('d-m-Y', $timestamp);
詳しくは、 strtotime
のドキュメントを参照してください。
あるいはもっと短く:
$new_date = date('d-m-Y', strtotime(your date variable));
注:この投稿の回答は支持されることがあるので、それ以上支持しないようにと親切にお願いします。私の答えは古く、技術的には正しくありません。ここにはいくつかの優れたアプローチがあります。私は歴史的な目的のためだけにそれをここに保管しています。
ドキュメンテーションはstrtotime関数については十分に説明していませんが、@ rjmunroは彼のコメントで問題を正しく対処しました。それはISOフォーマットの日付 "YYYY-MM-DD"です。
また、Date_Converter関数がまだ機能する可能性があるとしても、以下の不正確なステートメントがあるかもしれないことを警告したいので、それらを無視してください。
最も投票された回答は実際には正しくありません。
PHP要約マニュアル ここ には、「この関数には英語の日付フォーマットを含む文字列が与えられることが想定されています」と書かれています。 それが実際に意味するものはそれがアメリカの日付形式を期待するということです、例えば "m-d-Y"または "m/d/Y"。
つまり、 "Y-m-d"として指定された日付はstrtotime
によって誤って解釈される可能性があります。予想される形式で日付を入力してください。
私はいくつかのフォーマットで日付を返すための小さな関数を書きました。自由に使用して変更してください。 誰かがそれをクラスに変えるのであれば、それが共有されるのであればうれしいです。
function Date_Converter($date, $locale = "br") {
# Exception
if (is_null($date))
$date = date("m/d/Y H:i:s");
# Let's go ahead and get a string date in case we've
# been given a Unix Time Stamp
if ($locale == "unix")
$date = date("m/d/Y H:i:s", $date);
# Separate Date from Time
$date = explode(" ", $date);
if ($locale == "br") {
# Separate d/m/Y from Date
$date[0] = explode("/", $date[0]);
# Rearrange Date into m/d/Y
$date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
}
# Return date in all formats
# US
$Return["datetime"]["us"] = implode(" ", $date);
$Return["date"]["us"] = $date[0];
# Universal
$Return["time"] = $date[1];
$Return["unix_datetime"] = strtotime($Return["datetime"]["us"]);
$Return["unix_date"] = strtotime($Return["date"]["us"]);
$Return["getdate"] = getdate($Return["unix_datetime"]);
# BR
$Return["datetime"]["br"] = date("d/m/Y H:i:s", $Return["unix_datetime"]);
$Return["date"]["br"] = date("d/m/Y", $Return["unix_date"]);
# Return
return $Return;
} # End Function
これを実装する方法は2つあります。
1。
$date = strtotime(date);
$new_date = date('d-m-Y', $date);
2。
$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y');
strftime()
関数を試すことができます。簡単な例:strftime($time, '%d %m %Y');
この関数を使用して任意の形式から任意の形式に変換します
function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
$date_aux = date_create_from_format($from_format, $date);
return date_format($date_aux,$to_format);
}
下記はPHPコードで、mktime()
を使って明日の日付を生成し、そのフォーマットを dd/mm/yyyy フォーマットに変更してからecho
を使って出力します。
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
この特定の変換には、フォーマット文字列を使うこともできます。
$new = vsprintf('%3$s-%2$s-%1$s', explode('-', $old));
明らかにこれは他の多くの日付フォーマット変換にはうまくいきませんが、この場合は部分文字列を並べ替えるだけなので、これを行うためのもう1つの方法があります。
簡単な方法strtotime()
とdate()
を使う:
$original_dateTime = "2019-05-11 17:02:07"; #This may be database datetime
$newDate = date("d-m-Y", strtotime($original_dateTime));
時間とともに
$newDate = date("d-m-Y h:i:s a", strtotime($original_dateTime));