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”的小时和分钟[重复]