如何在php中重新格式化日期时间字符串?
Posted
技术标签:
【中文标题】如何在php中重新格式化日期时间字符串?【英文标题】:how to re-format datetime string in php? 【发布时间】:2013-04-01 23:52:05 【问题描述】:我从插件收到日期时间。我把它放到一个变量中:
$datetime = "20130409163705";
这实际上转化为 yyyymmddHHmmss
。
我需要将其作为交易时间显示给用户,但它看起来不正确。
我想把它安排成 09/04/2013 16:37:05
或 09-apr-2013 16:37:05
。
如何更改字符串的顺序?
目前我认为是使用 substr 来分隔日期和时间。我仍然不确定如何添加其他字符并重新排列日期。
【问题讨论】:
date_parse_from_format()
会做你想做的事。
php.net/manual/tr/function.date.php ... 请
DateTime::createFromFormat()
我刚刚发现这个问题很有用,而且它是 2014 年的问题,所以关闭它的人都在谈论他们的底部。
投票重新开放。虽然问题显示了一个特定的案例,但很容易看到其他案例的应用。通过谷歌找到了这个答案,它为我指明了正确的方向,即使我的具体情况不同。
【参考方案1】:
你有不同的选择。
使用 date():
$format = date('d/m/y H:i:s', 1621371929);
echo $format;
输出是:
18/05/21 14:05:29
使用 date_format():
$date = date_create(1621371929);
echo date_format($date, 'd/m/y H:i:s');
输出是:
18/05/21 14:05:29
使用 DateTime::format():
$date = new DateTime('2021-05-18 14:05:29');
echo $date->format('d/m/y H:i:s');
输出是:
18/05/21 14:05:29
This article 为您提供了这三种方法的概述,this one 是 DateTime::format() 的深度。
【讨论】:
【参考方案2】:你可以使用date_parse_from_format()
函数...
date_parse_from_format(string $format, string $datetime): array
示例
<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>
上面的例子会输出:
Array
(
[year] => 2009
[month] => 1
[day] => 6
[hour] => 13
[minute] => 0
[second] => 0
[fraction] =>
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] => 1
[zone_type] => 1
[zone] => 3600
[is_dst] =>
)
检查the PHP docs..你会明白的
【讨论】:
嗨,欢迎来到 Stack Overflow!始终欢迎提供指向潜在解决方案的链接,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分。想象一下,页面被移动到另一台服务器,或者直接链接发生变化——未来的用户将无法从答案中受益。请看how to answer。【参考方案3】:date("Y-m-d H:i:s", strtotime("2019-05-13"))
【讨论】:
您能否进一步解释该给定行与问题的关系? 请在您的回答中为未来的用户添加一些解释 不错的单线!正在找这个【参考方案4】:https://en.functions-online.com/date.html?command="format":"l jS \\of F Y h:i:s A"
【讨论】:
【参考方案5】:为什么不像下面那样使用date(),试试这个
$t = strtotime('20130409163705');
echo date('d/m/y H:i:s',$t);
会被输出
09/04/13 16:37:05
【讨论】:
【参考方案6】:对于 PHP 5 >= 5.3.0 http://www.php.net/manual/en/datetime.createfromformat.php
$datetime = "20130409163705";
$d = DateTime::createFromFormat("YmdHis", $datetime);
echo $d->format("d/m/Y H:i:s"); // or any you want
结果:
09/04/2013 16:37:05
【讨论】:
【参考方案7】:如果您想使用substr()
,您可以像这样轻松添加破折号或斜线..
$datetime = "20130409163705";
$yyyy = substr($datetime,0,4);
$mm = substr($datetime,4,6);
$dd = substr($datetime,6,8);
$hh = substr($datetime,8,10);
$MM = substr($datetime,10,12);
$ss = substr($datetime,12,14);
$dt_formatted = $mm."/".$dd."/".$yyyy." ".$hh.":".$MM.":".$ss;
你可以从那一点找出任何进一步的格式。
【讨论】:
【参考方案8】:你可以这样做:
<?php
$datetime = "20130409163705";
$format = "YmdHis";
$date = date_parse_from_format ($format, $datetime);
print_r ($date);
?>
你可以看看date_parse_from_format()
和the accepted format values.
【讨论】:
【参考方案9】:试试这个
$datetime = "20130409163705";
print_r(date_parse_from_format("Y-m-d H-i-s", $datetime));
输出:
[year] => 2013
[month] => 4
[day] => 9
[hour] => 16
[minute] => 37
[second] => 5
【讨论】:
以上是关于如何在php中重新格式化日期时间字符串?的主要内容,如果未能解决你的问题,请参考以下文章