PHP 日期时间>格式返回错误的序号后缀



我有一个UTC时间字符串,它不能很好地与PHP的DateTime->format函数配合使用。

我创建一个新的 php 文件并粘贴以下内容:

<?php
$date = DateTime::createFromFormat('U', 1567209600, new DateTimeZone('Australia/Brisbane') );
die( $date->format( 'l, nS F Y' ) );

我得到:

Saturday, 8st August 2019

对于初学者来说,正确的日期是 31,8 的序号后缀应该是"th"。这到底是怎么回事?此文件中没有其他代码。

请注意,代码区分大小写。N是一周中的序数日期,n是序数月份。你想要j,这是没有前导零的月份中的某一天:l, jS F Y

$date = DateTime::createFromFormat('U', 1567209600, new DateTimeZone('Australia/Brisbane') );
var_dump($date);

时区设置不正确。

输出

object(DateTime)#2 (3) { ["date"]=> string(26) "2019-08-31 00:00:00.000000" ["timezone_type"]=> int(1) ["timezone"]=> string(6) "+00:00" }

如果日期是根据时间戳创建的,则时区始终为 UTC。您必须在创建后使用 setTimeZone 才能传输到您的时区。

最新更新