IntlCalendar::fromDateTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a2)

IntlCalendar::fromDateTime从 DateTime 对象或字符串创建 IntlCalendar

描述

面向对象风格

public static IntlCalendar::fromDateTime(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

过程式风格

intlcal_from_date_time(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

DateTime 对象或可以传递给 DateTime::__construct() 的字符串创建 IntlCalendar 对象。

新日历不仅会表示与给定 DateTime 相同的瞬间(对于非常久远的过去或未来的日期,可能会损失精度),还会表示相同的时区(需要注意的是,将使用不同的时区数据库,因此结果可能有所不同)。

参数

datetime

一个 DateTime 对象或一个可以传递给 DateTime::__construct()string

返回值

创建的 IntlCalendar 对象,或者在失败的情况下为 null。如果传递了 string,则会传播在 DateTime 构造函数内部发生的任何异常。

示例

示例 #1 IntlCalendar::fromDateTime()

<?php
ini_set
('date.timezone', 'Europe/Lisbon');

//与 IntlCalendar::fromDateTime(new DateTime(...)) 相同
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');

//注意时区是 Europe/Berlin,而不是默认的 Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

上面的示例将输出

2013 Februar 28 00:01:02 Deutschland Zeit

添加注释

用户贡献的注释 1 注释

SenseException
10 年前
不要忘记 fromDateTime() 不会设置任何语言环境,并且会设置默认语言环境。在我的情况下,它是 en_US_POSIX。

如果你想创建一个包含 DateTime 对象值的 IntlCalendar 对象,并使用你的语言环境,请使用 createInstance() 而不是,并执行以下操作

<?php
$intlCalendar
->setTime($dateTime->getTimestamp() * 1000);
?>

IntlCalendar 使用毫秒,因此你需要将时间戳乘以 1000。

使用 fromDateTime() 可能会导致意外行为,例如 getFirstDayOfWeek() 返回错误的整数。
To Top