24小时格式的日期和时间

时间:2016-02-01 09:36:02

标签: php mysql date datetime 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;

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

我该怎么做?

2 个答案:

答案 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() 函数所需的格式参数指定如何格式化日期(或时间)。

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

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