到DateTime的PHP时间字符串没有给出正确的结果

时间:2014-08-19 09:11:20

标签: php datetime

我有一个来自XML文件的时间轴

1408226400

现在我想将此字符串转换为DateTime对象,但我得到了错误的结果。

//This is an example for this Question, but with the real datestring
//My real code looks like this: $dbTurn->setStartDate(new \DateTime("@".$turn['cruiseStartDateString']));

$test = date("d-m-Y H:i", 1408226400);
$dateTime = new DateTime($test);
print_r($dateTime);
# result is DateTime Object ( [date] => 2014-08-16 18:00:00 [timezone_type] => 3 [timezone] => America/New_York ) 

但那不是我预期的日期,因为我应该这样做的原因是:

2014-08-17 10:04:00

此外,取自我在代码中的评论中提到的实际代码,此片段:

$dbTurn->setStartDate(new \DateTime($turn['cruiseStartDateString']));

如果我不压制错误消息,则抛出此错误:

message => (string) DateTime::__construct(): Failed to parse time string (1408226400) at position 7 (4): Unexpected character

日期字符串有问题还是我做错了什么?

2 个答案:

答案 0 :(得分:2)

在传递给DateTime对象构造函数之前,您不需要使用date()创建格式化的日期字符串:

$timestamp = 1408226400;

$dateTime = new DateTime('@' . $timestamp);
print_r($dateTime);

虽然您可能还需要将时区传递给DateTime构造函数

答案 1 :(得分:1)

你可以试试这个

date_default_timezone_set('Europe/Berlin');
$test = date("Y-m-d h:i:s", 1408226400);
$dateTime = new DateTime($test);
print_r($dateTime);

输出:

DateTime Object
(
    [date] => 2014-08-17 12:00:00
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)