DateTime::getTimestamp
DateTimeImmutable::getTimestamp
DateTimeInterface::getTimestamp
date_timestamp_get
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTime::getTimestamp -- DateTimeImmutable::getTimestamp -- DateTimeInterface::getTimestamp -- date_timestamp_get — Gets the Unix timestamp
说明
面向对象风格
public DateTime::getTimestamp(): int
public DateTimeImmutable::getTimestamp(): int
public DateTimeInterface::getTimestamp(): int
过程化风格
Gets the Unix timestamp.
参数
此函数没有参数。
返回值
Returns the Unix timestamp representing the date.
错误/异常
If the timestamp cannot be represented as int, a ValueError
is thrown. Prior to PHP 8.0.0, false
was returned in this case.
Still, the timestamp can be retrieved as string by using
DateTimeInterface::format() with the U
format.
更新日志
版本 | 说明 |
---|---|
8.0.0 |
These functions no longer return false on failure.
|
范例
示例 #1 DateTime::getTimestamp() example
面向对象风格
<?php
$date = new DateTime();
echo $date->getTimestamp();
?>
过程化风格
<?php
$date = date_create();
echo date_timestamp_get($date);
?>
以上例程的输出类似于:
1272509157
参见
- DateTime::setTimestamp() - 以 Unix 时间戳的方式设置 DateTime 对象
- DateTime::format() - Returns date formatted according to given format

User Contributed Notes 4 notes
heiccih at gmail dot com ¶
8 years ago
In 32-bit system the unix timestamp will overflow if the date goes beyond year 2038 and this method will return false. In 64-bit systems this function will still work as intended. For more information please see http://en.wikipedia.org/wiki/Year_2038_problem.
Justin Heesemann ¶
12 years ago
Note that for dates before the unix epoch getTimestamp() will return false, whereas format("U") will return a negative number.
<?php
$date = new DateTime("1899-12-31");
// "-2209078800"
echo $date->format("U");
// false
echo $date->getTimestamp();
?>
mike at eastghost dot com ¶
27 days ago
Not clearly noted in documentation:
UNIX timestamps are by definition in UTC timezone only: @1234567890 represents the same date/time regardless of timezone.
Therefore, DateTime::getTimestamp() always returns (seconds since epoch) in the UTC timezone, even when DateTime object has its DateTimeZone set to any non-UTC timezone.
To make a 'timestamp' that is local to your server (in any non-UTC timezone), use mktime() and feed it the desired/offset local time components.
Julien Bornstein ¶
2 years ago
Please note that DateTime::gettimestamp() will return an integer, but DateTime::format("U") will return a string.
timestamp must always be typed as int because in PHP, timestamps are integers.
eg:
- strftime ( string $format [, int $timestamp = time() ] ) : string
- time() // return int
- ...
So IMHO, as PHP becomes more and more a typed language, avoid using DateTime::format("U") to avoid this kind of errors "strftime() expects parameter 2 to be int, string given"
备份地址:http://www.lvesu.com/blog/php/datetime.gettimestamp.php