0

我从表单 $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();
4

3 回答 3

1

只要$formData['date']真正返回DateTime getTimezone()类型的对象就可以工作。这将返回DateTimeZone对象。

为了获得时区的名称,请使用:

$formData['date']->getTimezone()->getName()

... 或者 ...

timezone_name_get($formData['date']->getTimezone());
于 2013-08-29T11:25:20.103 回答
1

是的......确实有点慢,但评论和答案都是正确的。

DateTime::getTimezone() 返回一个 DateTimeZone 对象,请参阅doc

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"
于 2013-08-29T11:30:07.510 回答
0

您是否尝试过直接访问时区属性?我觉得是公开的

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; 
?>
于 2013-08-29T11:28:47.883 回答