24 小时格式的日期和时间

2022-08-30 18:14:11

我有一个这种格式的日期,我想像这样显示时间。Fri, 15 Jan 2016 15:14:10 +08002016-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:102016-01-15 15:14:10

我该怎么做?


答案 1

请改用 H

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

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

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

编辑

OP确认他的时区设置为UTC,在这种情况下,它掩盖了它在早上显示7的完美感觉,因为日期使用PHPs默认时区。

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

echo (new DateTime($test))->format("Y-m-d H:i:s");

答案 2

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

获取日期

date() 函数的必需 format 参数指定如何设置日期(或时间)的格式。

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

  • 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 (am or pm)

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

推荐