如何在PHP中重新格式化日期时间字符串?

61

我从一个插件中获取了一个日期时间。我将它放入一个变量中:

$datetime = "20130409163705"; 

实际上,这意味着yyyymmddHHmmss

我需要将其显示给用户作为交易时间,但它看起来不太正常。

我想把它排列成 09/04/2013 16:37:05 或者 09-apr-2013 16:37:05 这样。

我该如何改变字符串的顺序?

目前我能想到的是使用substr来分离日期和时间。我仍然不确定如何添加额外字符并重新排列日期。


5
date_parse_from_format()函数可以实现你想要的功能。 - mishmash
请查阅以下链接:http://php.net/manual/tr/function.date.php - Volkan
5
我刚刚发现这个问题很有用,而且是在2014年,因此关闭它的人胡说八道。 - Relaxing In Cyprus
投票重新开放。尽管该问题呈现了一个特定的情况,但其适用于其他情况也很容易看出。通过谷歌找到了这个答案,并且它引导了我正确的方向,即使我的具体情况不同。 - Hobo
9个回答

94
为什么不像下面这样使用 date(),试试这个:
$t = strtotime('20130409163705');
echo date('d/m/y H:i:s',$t);

并将被输出

09/04/13 16:37:05

47

6

date("Y-m-d H:i:s", strtotime("2019-05-13"))


2
你能进一步解释一下那行代码与问题的关系吗? - Nico Haase
1
请在你的答案中添加一些解释,以便未来用户理解。 - DaFois

2
如果你想使用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;

你可以从这一点开始了解任何进一步的格式设置。

2
你有不同的选择。
使用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

本文 为您提供了这三种方法的概述,另一篇文章 则深入介绍了DateTime::format() 方法。


1
尝试这个。
$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

1

0
https://en.functions-online.com/date.html?command={"format":"l jS \\of F Y h:i:s A"}

-1

您可以使用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] => 
)

查看PHP文档,你会得到清晰的理解。


7
你好,欢迎来到Stack Overflow!如果你有可能解决问题的链接,请附加一些上下文说明链接的内容和为什么需要它,让其他用户了解其所在位置。请引用重要链接中最相关的部分。想象一下,如果该页面移动到另一个服务器或直接链接发生更改,未来的用户将无法从答案中获益。请查看 如何回答问题 - Jesse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接