2013-08-29 88 views
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(); 
+0

你試過'$ formData ['date'] - > timezone;'? – Bora

+0

你有什麼錯誤? 'getTimezone'是一種方法,但它返回一個對象,而不是一個字符串[RTFM](http://www.php.net/manual/en/class.datetime.php),它返回一個DateTimeZone實例,所以你可能正在尋找' - > getTimezone() - > getName();' –

回答

1

只要$formData['date']真的返回DateTime類型的對象getTimezone()會工作。這將返回DateTimeZone對象。

爲了獲得時區的名稱使用:

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

......或者......

timezone_name_get($formData['date']->getTimezone()); 
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; 
?> 
+0

_proper_方法就像Filou所示:使用方法。這是最安全的方式。直接訪問該屬性並不像它可能的那樣整潔。假設下一個主要版本使所有屬性保密? –

+0

你是對的,這將是一個很大的變化,可能會打破很多腳本,但這是一個可能性,我們必須記住 – Imanol

1

是啊......真的有點慢,但評論和回答都是正確的。

日期時間:: 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" 
+0

+ 1的文檔鏈接,方法簽名和_proper_方式到達時區(通過方法調用) –

+0

感謝複製粘貼該部分從我的答案:) – nifr

+0

@nifr:我看不到2個語句完全相似,所以複製粘貼不在這裏 –

相關問題