DateTimeを文字列PHPに変換


225

PHPのDateTimeオブジェクトを文字列に変換する方法については、すでに多くのサイトを調査しています。「DateTime to String」ではなく「String to DateTime」が常に表示される

PHP DateTimeをエコーできますが、PHP文字列関数を使用してDateTimeを処理します。

私の質問は、PHPのdateTimeオブジェクトを次のようなコードで始まる文字列にするにはどうすればよいですか。

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

2
文字列関数でDateTimeを処理する理由は何ですか?あなたは何を成し遂げようとしているのですか?
mgiuffrida

2
ある種の日時バリデーター?PHPで
Netorica

回答:


413

クラスのformatメソッドを使用できますDateTime

$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');

format何らかの理由で失敗した場合は、が返されFALSEます。一部のアプリケーションでは、失敗したケースを処理することが理にかなっている場合があります。

if ($result) {
  echo $result;
} else { // format failed
  echo "Unknown Time";
}

3
+1動作します。この変換を行う前に、(同じ行で)nullを確認する方法も教えてください。ありがとう!
ワット

2
@Wattよかったね この例を拡張して、失敗したケースの処理方法を示しました。
rjz

3
タイムゾーンを忘れて、代わりに$date->format('c')or $date->format('Y-m-d H:i:s Z')または$date->format('Y-m-d H:i:s T')
Timo Huovinen '19年

1
-> formatを使用するには、どの使用ステートメントが必要ですか?それはZendで何かが欠けていると言います
化学者

1
$result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');PHP 5.4以降、この短い形式を使用できます。ここを見てください:docs.php.net/manual/en/migration54.new-features.php インスタンス化
FFirmenich

17

私が見つけた最も簡単な方法は:

$date   = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr    = explode('-', $result);
$result = implode("", $krr);
echo $result;

お役に立てば幸いです。



15

にはdate_d.phpformatlikeで使用するための事前定義された形式がいくつかあります。

define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");

次のように使用します。

$date = new \DateTime();
$string = $date->format(DATE_RFC2822);

3
DateTimeの定数(DateTime :: ISO8601など)を使用すると、コードが読みやすくなります。
Anh-Tuan Mai

2

リストを使用した短い方法。そして、あなたはそれぞれの日付コンポーネントであなたが望むことをすることができます。

list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;

2

それは私のために働いた

$start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
$current_date = new DateTime();
$diff         = $start_time->diff($current_date);
$aa           = (string)$diff->format('%R%a');
echo gettype($aa);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.