在PHP中优雅地改变2011-10-31T16:22:00到2011-10-31

时间:2012-01-03 08:35:17

标签: php mysql xml api

我想知道是否有人可以帮我解决这个问题。 我正在运行PHP版本5.2.16。

到目前为止,我使用了一个子串。

$Date = substr($Date,0,10);
$Date = mysql_real_escape_string($Date);

我正在从REST Api中抓取这个字符串,所以我无法控制它的格式,我不确定字符串中间的'T'是否会导致问题。

现在这个工作做得很简单但是我想要使用更优雅的东西,比如

$Date = Date::createFromFormat('Y-m-dTh:i:s', $Date)->format('Y-m-d');

但这只会返回错误: 致命错误:在...中找不到“日期”类

我对php很新,但我假设我需要Date类(常识),但我如何在我的脚本中实现这个类?

非常感谢任何帮助或建议。

谢谢:)

4 个答案:

答案 0 :(得分:4)

该类名为DateTime

$Date = DateTime::createFromFormat('Y-m-dTh:i:s', $Date)->format('Y-m-d');

http://php.net/book.datetime

但是,因为格式是标准化的(ISO 8601),所以不应该出乎意料地改变,所以将它自己分成日期和时间应该是安全的

list ($date, $time) = explode('T', $string);

答案 1 :(得分:4)

你可以这样做:

<?php

$Date = strtotime("2011-10-31T16:22:00");

$converted = date("Y-m-d", $Date);

echo ($converted);

?>

看这里http://codepad.org/TNIwXDRp

答案 2 :(得分:0)

该类不是Date,而是DateTimecreateFromFormat()方法需要PHP / 5.3或更高版本。无论如何,constructor都能正确识别您所拥有的格式,因此您只需要:

<?php

$date = new DateTime('2011-10-31T16:22:00');
echo $date->format('Y-m-d');

答案 3 :(得分:0)

您可以使用substr提取,也可以只使用strtotime。我使用过它们,它们都是有用的解决方案。如果您还需要提取时间戳,那么strtotime会更好。