将日期时间转换为另一日期时间
问题描述:
有人可以向我解释这里发生了什么吗?将日期时间转换为另一日期时间
<?php
$date= \DateTime::createFromFormat("H:i:s", "17:30:23");
var_dump($date);
$date = new DateTime('@' . $date->format('U'));
var_dump($date);
输出:
object(DateTime)#1 (3) {
["date"]=> string(19) "2014-09-06 17:30:23"
["timezone_type"]=> int(3)
["timezone"]=> string(16) "Europe/Amsterdam"
}
object(DateTime)#2 (3) {
["date"]=> string(19) "2014-09-06 15:30:23"
["timezone_type"]=> int(1)
["timezone"]=> string(6) "+00:00"
}
如何从一个日期时间转移的时间到另一个,所以它是完全一样的? 我问,因为我有我自己的日期类,它扩展了我需要使用的\DateTime
,但是我的源是一个常规的\DateTime
对象。
答
你只需要改变你的DateTime对象是在同一个时区。在这种情况下,我使用UTC,因为Unix的时间戳总是在UTC:
$date= \DateTime::createFromFormat("H:i:s", "17:30:23");
$date->setTimezone(new DateTimeZone('UTC'));
var_dump($date);
$date = new DateTime('@' . $date->format('U'));
var_dump($date);
如果你想回到你的时区使用:
$date= \DateTime::createFromFormat("H:i:s", "17:30:23");
var_dump($date);
$date = new DateTime('@' . $date->format('U'));
$date->setTimezone(new DateTimeZone('Europe/Amsterdam'));
var_dump($date);
+0
谢谢,现在更有意义! – 2014-09-06 21:49:29
* “我问,因为我有我自己的日期类延伸\日期时间” - - 你应该显示它。另外,这样做可能会产生一些意想不到的影响。 – 2014-09-06 20:48:49
它什么都不做。只需要一个'__toString()'方法。无论如何,这并不重要,上面的例子使用标准的'\ DateTime'类,问题仍然存在。 – 2014-09-06 20:55:03