24小时格式的日期和时间

Pat*_*ani 8 php mysql datetime date datetime-format

我有这种格式的日期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;
Run Code Online (Sandbox Code Playgroud)

但它以这种格式显示日期:2016-01-15 7:14:10它应该是2016-01-15 15:14:10.

我怎样才能做到这一点?

rdi*_*diz 23

H改为使用:

$test = 'Fri, 15 Jan 2016 15:14:10 +0800';
$t = date('Y-m-d H:i:s',strtotime($test));
echo $t;
Run Code Online (Sandbox Code Playgroud)

H:24小时格式的一小时,前导零到23

G应该是相同的,但是没有前导零.我怀疑你的PHP被设置为不同的时区+0800.你能确认你的时区(date_default_timezone_get())吗?

编辑

OP确认他的时区设置为UTC,在这种情况下,它完全意识到它在早上7点显示,因为date使用PHP默认时区.

如果你想"继承"时区,同时获得更大的灵活性,你应该切换到DateTime:

echo (new DateTime($test))->format("Y-m-d H:i:s");
Run Code Online (Sandbox Code Playgroud)


ant*_*ove 7

https://www.w3schools.com/php/php_date.asp

约会

date() 函数所需的格式参数指定如何格式化日期(或时间)。

以下是一些常用的日期字符:

  • d - 代表月份中的日期(01 到 31)
  • m - 代表一个月(01 到 12)
  • Y - 代表年份(四位数字)
  • l(小写“L”)- 代表星期几

约个时间

以下是一些常用的时间字符:

  • H - 24 小时格式的小时(00 到 23)
  • h - 12 小时格式的一小时,带前导零(01 到 12)
  • i - 带有前导零的分钟(00 到 59)
  • s - 带有前导零的秒(00 到 59)
  • a - 小写的午前和午后(上午或下午)

https://www.php.net/manual/en/datetime.format.php

public DateTime::format ( string $format ) : string
Run Code Online (Sandbox Code Playgroud)
<?php

    $datetime = new DateTime( "now", new DateTimeZone( "Europe/Bucharest" ) );

    echo $datetime->format( 'Y-m-d H:i:s' );
Run Code Online (Sandbox Code Playgroud)