我有一个来自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
日期字符串有问题还是我做错了什么?
答案 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
)