24 小时格式的日期和时间

Date and time in 24 hours 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;

但它显示的日期格式是:2016-01-15 7:14:10,应该是2016-01-15 15:14:10

我该怎么做?

改用H

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

H: 24-hour format of an hour with leading zeros 00 through 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");

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 - 小写的 Ante meridiem 和 Post meridiem(上午或下午)

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' );