如何转换给定格式的日期

时间:2011-01-23 23:51:57

标签: php datetime

我有这种格式的日期:

20110122000000.000

我该如何改变呢?

12.01.2011

(2011年1月12日)

然后我在php中使用它:

$origDate = "20110112000000.000";
$newDate = date("d.m.Y", strtotime($origDate));

它可以输出如下内容:

01.12.2011

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您使用的是> = PHP 5.3

$date = DateTime::createFromFormat('Ymd', '20110112000000.000');
echo $date->format('d.m.Y');

我无法在这里测试PHP 5.3,所以如果有无关紧要的内容正在播放createFromFormat(),请先删除它。

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

$date = rtrim($date, '.0')

因为最重要的数字总是在右边,(在这个例子中是2),所以它应该不是问题。

答案 1 :(得分:1)

我是这样做的:

$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;

答案 2 :(得分:0)

只需按照您的日期格式猜测数字是否一致,您就可以手动形成时间戳:

$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
);

产生01.12.2011