14、PHP 8.4 新特性 - 日期:新增 DateTime(Immutable)::createFromTimestamp 方法

作者: 温新

图书: 【PHP 8.4 新特性】

阅读: 162

时间: 2025-01-18 12:48:45

在 PHP 8.4 中,DateTimeDateTimeImmutable 类新增了 createFromTimestamp() 方法,用于通过 Unix 时间戳(即自 1970 年 1 月 1 日以来的秒数)创建一个 DateTimeDateTimeImmutable 对象。

这个新方法为开发者提供了一个更简便的方式来基于时间戳创建日期时间对象,特别是在处理来自文件、数据库或 API 的时间戳时。

背景说明

在早期版本的 PHP 中,创建 DateTime 对象的常见方法是使用 DateTime::setTimestamp()DateTimeImmutable::setTimestamp()。不过,这些方法需要先创建一个 DateTimeDateTimeImmutable 实例,然后再设置时间戳。PHP 8.4 引入的 createFromTimestamp() 方法简化了这个过程,让开发者可以通过直接提供时间戳来创建对象。

<?php

declare(strict_types=1);

// 以前的操作方法
$unixTime = time();
$dt = new DateTime();
$dt->setTimestamp($unixTime);
echo $dt->format('Y-m-d');

新增 createFromTimestamp() 方法

类方法概要

class DateTime {
    // ...
    public static function createFromTimestamp(int|float $timestamp): static {}
}

class DateTimeImmutable {
    // ...
    public static function createFromTimestamp(int|float $timestamp): static {}
}
  • $timestamp:Unix 时间戳,表示自 1970 年 1 月 1 日以来的秒数,通常是一个整数值。

  • 返回值:返回一个 DateTimeDateTimeImmutable 对象,或者在发生错误时返回 false

方法介绍

  • DateTime::createFromTimestamp():该方法创建一个可变的 DateTime 对象。返回的对象允许对时间进行修改。
  • DateTimeImmutable::createFromTimestamp():该方法创建一个不可变的 DateTimeImmutable 对象。返回的对象一旦创建后无法修改,如果需要修改时间,需要生成一个新的对象。

使用案例

使用 DateTime::createFromTimestamp()
<?php

declare(strict_types=1);

$timestamp = time();
// 使用 DateTime 创建对象
$dateTime = DateTime::createFromTimestamp($timestamp);
echo $dateTime->format('Y-m-d H:i:s'); 

使用 DateTimeImmutable::createFromTimestamp()

<?php

declare(strict_types=1);

$timestamp = time();
// 使用 DateTimeImmutable 创建不可变对象
$dateTimeImmutable = DateTimeImmutable::createFromTimestamp($timestamp);
echo $dateTimeImmutable->format('Y-m-d H:i:s');
请登录后再评论