我有一个代码见下文。时间16:17
的时区是 Europe/Vilnius
。我的目标是应用时区$tz2 = 'Africa/Dakar'
并在Africa/Dakar
时区中获取16:17
时间。
$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;
我尝试了很多方法。现在这段代码给了我一个错误:
致命错误未捕获错误:在/home4/phptest/public_html/code.php70(5( 中的字符串上调用成员函数 format((:eval(('d code:8 堆栈跟踪:#0/home4/phptest/public_html/code.php70(5(: eval(( #1 {main} 抛出在第 8 行
我的问题是如何修复代码以获得结果,这是进行此类转换的便捷方法吗?
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');
参数的类型是日期时间的日期时区。您正在传递一个字符串。
你可以这样做:
$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');
要回显日期时间,您可以使用格式。
您不能只在第二个参数中将时区作为字符串传递。您必须使用时区名称作为构造函数参数创建DateTimeZone
类的新实例。例如:
<?php
$dt = new DateTime("16:17", new DateTimeZone('Europe/Warsaw'));