我的日期格式为Fri, 15 Jan 2016 15:14:10 +0800
,我希望显示时间2016-01-15 15:14:10
。
我尝试的是:
$test = 'Fri, 15 Jan 2016 15:14:10 +0800';
$t = date('Y-m-d G:i:s',strtotime($test));
echo $t;
但是它以这种格式显示日期:2016-01-15 7:14:10
,它应该是2016-01-15 15:14:10
。
我该怎么做?
答案 0 :(得分:21)
改为使用H
:
$test = 'Fri, 15 Jan 2016 15:14:10 +0800';
$t = date('Y-m-d H:i:s',strtotime($test));
echo $t;
H :24小时格式的小时,前导零点到第23位
G应该是相同的,但是没有前导零。我怀疑您的PHP设置为与+0800
不同的时区。你能确认你的时区(date_default_timezone_get()
)吗?
OP确认他的时区设置为UTC,在这种情况下,由于date
使用PHP默认时区,因此它在早上7点显示完美感觉。
如果你想继续"继承"时区,在获得更大灵活性的同时,您应切换到DateTime
:
echo (new DateTime($test))->format("Y-m-d H:i:s");
答案 1 :(得分:1)
https://www.w3schools.com/php/php_date.asp
date() 函数所需的格式参数指定如何格式化日期(或时间)。
以下是一些常用的日期字符:
以下是一些常用的字符:
https://www.php.net/manual/en/datetime.format.php
public DateTime::format ( string $format ) : string
<?php
$datetime = new DateTime( "now", new DateTimeZone( "Europe/Bucharest" ) );
echo $datetime->format( 'Y-m-d H:i:s' );