我从表单$formData:中获得一个数组
Array ( [first_name] => 12 [last_name] => 1 [date] => DateTime Object ( [date] => 2008-01-01 00:00:00 [timezone_type] => 3 [timezone] => Europe/Berlin ) [sex_id] => 1 [terms] => 1 )
我如何到达[日期]和[时区]?
这不起作用:
$formData['date']->getTimezone();
只要$formData['date']
真的返回类型为DateTime
的对象,getTimezone()就会工作。这将返回DateTimeZone
对象。
要获取时区名称,请使用:
$formData['date']->getTimezone()->getName()
或
timezone_name_get($formData['date']->getTimezone());
是的。。。确实有点慢,但评论和回答都是正确的。
DateTime::getTimezone()返回一个DateTimeZone对象,请参阅文档
public DateTimeZone DateTime::getTimezone ( void )
但您不一定需要对象,但如果您想访问字段,请使用
$datetime->timezone
或者一个完整的例子:
$array = array(
'blah' => 0,
'date' => new Datetime(),
'blub' => 1
);
var_dump($array);
var_dump($array['date']->timezone);
var_dump($array['date']->getTimezone()->getName());
输出:
array(3) {
["blah"]=>
int(0)
["date"]=>
object(DateTime)#1 (3) {
["date"]=>
string(19) "2013-08-29 13:25:08"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["blub"]=>
int(1)
}
string(13) "Europe/Berlin"
string(13) "Europe/Berlin"
您是否尝试过直接访问时区属性?我认为这是公共
class DateTime#1 (3) {
public $date =>
string(19) "2013-08-29 13:24:59"
public $timezone_type =>
int(3)
public $timezone =>
string(13) "Europe/Berlin"
}
<?php
$timezone = $frmData['date']->timezone;
?>