If your PHP version is lower than 5.3 then you can use this class to be able to use the functions "setTimestamp" and "getTimestamp":
<?php
class MyDateTime extends DateTime
{
public function setTimestamp( $timestamp )
{
$date = getdate( ( int ) $timestamp );
$this->setDate( $date['year'] , $date['mon'] , $date['mday'] );
$this->setTime( $date['hours'] , $date['minutes'] , $date['seconds'] );
}
public function getTimestamp()
{
return $this->format( 'U' );
}
}
$date = new MyDateTime();
$date->setTimestamp( $someTimestamp );
echo $date->format( 'd/m/Y H:i:s' );
?>
DateTime::setTimestamp
date_timestamp_set
(PHP 5 >= 5.3.0)
DateTime::setTimestamp -- date_timestamp_set — Unix タイムスタンプを用いて日付と時刻を設定する
説明
オブジェクト指向型
手続き型
Unix タイムスタンプを用いて日付と時刻を設定します。
パラメータ
-
object -
手続き型のみ: date_create() が返す DateTime オブジェクト。 この関数は、このオブジェクトを変更します。
-
unixtimestamp -
Unix タイムスタンプ。
返り値
メソッドチェインに使う DateTime オブジェクトを返します。失敗した場合に FALSE を返します。
例
例1 DateTime::setTimestamp() の例
オブジェクト指向型
<?php
$date = new DateTime();
echo $date->format('U = Y-m-d H:i:s') . "\n";
$date->setTimestamp(1171502725);
echo $date->format('U = Y-m-d H:i:s') . "\n";
?>
手続き型
<?php
$date = date_create();
echo date_format($date, 'U = Y-m-d H:i:s') . "\n";
date_timestamp_set($date, 1171502725);
echo date_format($date, 'U = Y-m-d H:i:s') . "\n";
?>
上の例の出力は、 たとえば以下のようになります。
1272508903 = 2010-04-28 22:41:43 1171502725 = 2007-02-14 20:25:25
注意
PHP 5.2 を使っている場合は、 Unix タイムスタンプ形式を使って新しい DateTime オブジェクトを作る方法もあります。 以下の例を参照ください。
例2 PHP 5.2 における DateTime::setTimestamp() のもうひとつの方法
<?php
$ts = 1171502725;
$date = new DateTime("@$ts");
echo $date->format('U = Y-m-d H:i:s') . "\n";
?>
上の例の出力は、 たとえば以下のようになります。
1171502725 = 2007-02-14 20:25:25
参考
- DateTime::getTimestamp() - Unix タイムスタンプを取得する
linblow at hotmail dot fr
04-Apr-2011 06:40
Use Web Form at Aouie.net
10-Sep-2010 04:15
When the exact time is important then it is important to note the difference between this and the UnixTimeStamp. The function will change the timestamp if necessary to take into account the daylight savings time.
e.g. Working with the 'Europe/London' timezone and setting the DateTime object to a timestamp of 1288486753 will result in the function automatically altering it to 1288490353.
This is because it is taking the fall time instead of the summer time (they will both be Sun, 31-Oct-2010 01:X:Y (I didn't check the hour and minute)).
Sincerely,
Aouie
