从表单中获取日期和时区

时间:2013-08-29 11:16:35

标签: php date symfony timezone

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

3 个答案:

答案 0 :(得分:1)

只要$formData['date']确实返回DateTime getTimezone()类型的对象就行了。这将返回DateTimeZone对象。

为了获得时区的名称:

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

......或......

timezone_name_get($formData['date']->getTimezone());

答案 1 :(得分: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"

答案 2 :(得分: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; 
?>