PHP Datetime-> format返回错误的序数后缀

时间:2019-08-20 01:45:46

标签: php datetime

我有一个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'。这到底是怎么回事?此文件中没有其他代码。

2 个答案:

答案 0 :(得分:1)

请注意,代码区分大小写。 N是星期几,n是星期几。您需要j,这是一个不带前导零的月份:l, jS F Y

答案 1 :(得分:0)

$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才能转移到您的时区。