タイムスタンプを使用して新しいDateTimeオブジェクトを作成しようとすると、このような構築エラーが発生しました:
例外:DateTime::construct():8(8)の位置で、時刻文字列(1372622987)の解析に失敗しました:DateTimeの予期しない文字>construct()
オブジェクトの作成コードは
$start_date = new DateTime( "@{$dbResult->db_timestamp}" );
ここで$dbResult->db_timestampはデータベースから取得した有効なunixタイムスタンプです。問題のタイムスタンプは
gt;1372622987です。
無効なフォーマットが渡された場合のこのエラーは理解できますが、これは正真正銘のタイムスタンプです。
これが非常に奇妙な理由です:タイムスタンプがハードコードされた値として渡され、新しいDateTimeオブジェクトを作成するスクリプトを実行したところ、エラーは報告されませんでした。
しかし、もし説明があれば教えてください。
createFromFormat`メソッドを使用する:
start_date = DateTime::createFromFormat("U", $dbResult->db_timestamp);`.
UPDATE
私は現在、Carbonの使用を推奨している。
これは私のために働いた。
/**
* return date in specific format, given a timestamp.
*
* @param timestamp $datetime
* @return string
*/
public static function showDateString($timestamp)
{
if ($timestamp !== NULL) {
$date = new DateTime();
$date->setTimestamp(intval($timestamp));
return $date->format("d-m-Y");
}
return '';
}