我有一个代码见下文。时间16:17
的时区为Europe/Vilnius
。我的目标是在$tz2 = 'Africa/Dakar'
时区应用时区16:17
并获得Africa/Dakar
时间。
$tz1 = 'Europe/Vilnius';
$tz2 = 'Africa/Dakar';
$a='16';
$b='17';
$match_time = date("H:i", strtotime($a.":".$b));
$dt1 = new DateTime($match_time, $tz1);
$dt2 = new DateTime($match_time, $tz2);
echo "match date".$match_time;
echo "dt1".$dt1;
echo "dt2".$dt2;
我尝试了很多方法来做到这一点。现在这段代码给了我一个错误:
FATAL ERROR未捕获错误:在/home4/phptest/public_html/code.php70(5)中调用字符串上的成员函数format():eval()'d code:8堆栈跟踪:#0 / home4 / phptest /public_html/code.php70(5):在第8行抛出的eval()#1 {main}
我的问题是如何修复代码以获得结果,这是进行此类转换的便捷方式吗?
答案 0 :(得分:2)
date_default_timezone_set('Europe/London');
$datetime = new DateTime('2008-08-03 12:35:23');
echo $datetime->format('Y-m-d H:i:s') . "\n";
$la_time = new DateTimeZone('America/Los_Angeles');
$datetime->setTimezone($la_time);
echo $datetime->format('Y-m-d H:i:s');
答案 1 :(得分:0)
参数的类型是DateTimeZone的DateTime。你正在传递一个字符串。
你可以这样做:
$tz1 = 'Europe/Vilnius';
$tz2 = 'Africa/Dakar';
$a='16';
$b='17';
$match_time = date("H:i", strtotime($a.":".$b));
$dt1 = new DateTime($match_time, new DateTimeZone($tz1));
$dt2 = new DateTime($match_time, new DateTimeZone($tz2));
echo "match date".$match_time;
echo "dt1".$dt1->format('Y-m-d H:i:s');
echo "dt2".$dt2->format('Y-m-d H:i:s');
要回显DateTime,您可以使用format。
答案 2 :(得分:0)
你不能只在第二个参数中将时区作为字符串传递。您必须使用时区名称作为构造函数参数创建DateTimeZone
类的新实例。例如:
<?php
$dt = new DateTime("16:17", new DateTimeZone('Europe/Warsaw'));