2010-12-01 96 views
50

如何在时间戳中创建小于< 5.3的日期时间?从PHP中的时间戳创建DateTime <5.3

在5.3这将是:

$date = DateTime::createFromFormat('U', $timeStamp); 

DateTime构造想要一个字符串,但是这并没有为我

$date = new DateTime("@$timeStamp"); 
+1

根据本说明书中,使应该工作。你有没有试过`$ date = new DateTime('@'。$ timeStamp);`?通过“没有工作”,你的意思是什么? – Jonah 2010-12-01 22:45:04

+1

定义*对我无效*。错误?错误的日期/时间? – 2010-12-01 22:46:53

+0

致命错误:带有消息'DateTime :: __ construct()的未捕获异常'异常'[datetime.--construct]:无法解析位置0(@)处的时间字符串(@):意外字符' – Yarin 2010-12-01 22:55:04

回答

3

下工作的工作:

$dateString = date('Ymd', $timeStamp); 
$date = new DateTime($dateString); 
31

假设你想要的日期和时间,而不仅仅是在以前的答案日期:

$dtStr = date("c", $timeStamp); 
$date = new DateTime($dtStr); 

虽然这似乎很愚蠢。

11

它不工作,因为你的$ timeStamp变量是空的。尝试在创建DateTime之前回显$ timeStamp的值,然后您会看到。如果你运行这个:

new DateTime('@2345234'); 

你没有得到一个错误。但是,如果您运行:

new DateTime('@'); 

它会产生您说的给出的确切错误。你需要做一些调试,并找出$ timeStamp为什么是空的。

38

PHP 5> = 5.2.0

$date = new DateTime(); 
$date->setTimestamp($timeStamp);