24 小时格式的日期和时间

Posted

技术标签:

【中文标题】24 小时格式的日期和时间【英文标题】:Date and time in 24 hours format 【发布时间】:2016-05-09 16:51:04 【问题描述】:

我有一个这种格式的日期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

我该怎么做?

【问题讨论】:

您的服务器上的时区设置是什么? 【参考方案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 设置为与 +0800 不同的时区。你能确认你的时区(date_default_timezone_get())吗?

编辑

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

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

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

【讨论】:

date_default_timezone_get() 仅显示 UTC 我也试过H但没有运气,显示2016-01-15 07:14:10 这就是原因。您输入的时区是 UTC 8 小时后的日期,在这种情况下,它对应于当地时间早上 7 点是完全合理的。 那我现在该怎么办?我该如何设置? 我没有投反对票,所以我不知道。可能是因为您在此处创建问题之前似乎没有花太多精力研究或查阅 PHP 手册。【参考方案2】:

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(am 或 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' );

【讨论】:

以上是关于24 小时格式的日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期/时间从 24 小时格式转换为 12 小时 AM/PM? [复制]

PHP如何获取日期时间格式“5月19日星期二下午1:24”的小时和分钟[重复]

如何将 12 或 24 小时时间格式的日期转换为“互联网”日期?

php 24小时格式的日期转换为12小时的日期

手机时间不对怎么调整

如何在 html5 日期时间选择器中将格式从 12 小时更改为 24 小时?