Php 如何将日期转换为给定格式

Php 如何将日期转换为给定格式,php,datetime,Php,Datetime,我有以下格式的日期: 20110122000000.000 我怎样才能改变这一点,使它更安全 12.01.2011 (2011年1月12日) 然后我在php中使用它: $origDate = "20110112000000.000"; $newDate = date("d.m.Y", strtotime($origDate)); 它可以输出如下内容: 01.12.2011 谢谢 只需猜测您的日期格式,即可手动形成时间戳: $origDate = "20110112000000.000";

我有以下格式的日期:

20110122000000.000

我怎样才能改变这一点,使它更安全

12.01.2011
(2011年1月12日)

然后我在php中使用它:

$origDate = "20110112000000.000";
$newDate = date("d.m.Y", strtotime($origDate));
它可以输出如下内容:

01.12.2011

谢谢

只需猜测您的日期格式,即可手动形成时间戳:

$origDate = "20110112000000.000";
$newDate = date("d.m.Y", mktime(0,0,0,
    substr($origDate, 4, 2), // month
    substr($origDate, 6, 2), // day
    substr($origDate, 0, 4)) // year
);

如果您使用>=PHP5.3,则会生成
01.12.2011

$date = DateTime::createFromFormat('Ymd', '20110112000000.000');
echo $date->format('d.m.Y');
我不能在这里测试PHP5.3,所以如果有无关的东西在播放
createFromFormat()
,请先删除它

我不知道您的所有格式,但这将删除字符串末尾的所有
0

$date = rtrim($date, '.0')
因为最重要的数字总是在右边(
2,在本例中),所以它不应该是个问题。

以下是我的做法:

$origDate = "20110112000000.000";
# strip stuff after the period because strptime doesn't support milliseconds
$date = preg_replace("/\.\d+$/", "", $origDate);
$time = strptime($date, "Ymdhms");
$newDate = strftime("%m.%d.%Y", mktime($time));
echo $newDate;

如果你的PHP代码有效,只需将d.m.Y改为m.d.Y?@Dan,我一开始是这么假设的,代码不会产生预期的结果。