略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: DateTime::getTimestamp

2024-12-20

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_getGets 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

参见

add a noteadd a note

User Contributed Notes 4 notes

up
37
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.
up
33
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();
?>
up
0
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.
up
-7
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"

官方地址:https://www.php.net/manual/en/datetime.gettimestamp.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3