2013-12-23 63 views
0

我想轉換一個utc時間存儲日期到另一個時區,但我似乎無法得到它的權利。 我有一個時間:日期時間php轉換和使用時區

date1 = new DateTime('first day of the month'); 
    date1.setTime(0,0,0); // Since using the first day of the month seems return the current time with different date 

默認的日期時間時區是在UTC。我想參考的時間是在'歐洲/阿姆斯特丹'時區。任何方式,我不能讓'歐洲/阿姆斯特丹'時區的時間相當於UTC的月份第一天? (呃,對不起,我的問題令人困惑......讓我舉個例子說清楚)。我試圖從數據庫中查詢。

If UTC date time is June 01, 2013. 00:00:00 
    I want to get get May 29, 2013 19:55:00. 

我試圖讓兩者之間的區別與聲明不同的時區的時間來獲得我想要的時間,但現在看來,這沒有工作:( 我編輯/澄清:

如果使用這樣的代碼:

$date1 = new DateTime('first day of the month'); 
    $date1.setTime(0,0,0); 
    print_r($date1->format('Y-m-d H:i:s')); 

我會得到:

2013-06-01 00:00:00 

的ñ如果我使用時區:

$date1->setTimeZone(new DateTimeZone('Europe/Amsterdame')); 
    print_r($date1->format('Y-m-d H:i:s')); 

我會得到:(這只是一個示例輸出):

2013-06-01 03:00:00 

由於時間差的。想要我想得到就像是相反:我想獲得轉換爲'UTC'時區時的日期時間,我會得到這個:06-01-2013 00:00:00時間。所以我的優先輸出是:2013-05-29 21:00:00 ...

+1

這不是有效的PHP。 –

+1

你試過了:http://www.php.net/manual/en/datetime.settimezone.php? –

+2

我不明白* 6月1日,00:00 UTC *與* 5月29日19:55阿姆斯特丹*有什麼關係。 – deceze

回答

0

要在PHP中設置默認日期,您可以將其設置在您的ini文件或PHP文件中,如下所示:

date_default_timezone_set('Europe/Amsterdam'); 

然後要格式化日期,請參閱http://www.php.net/manual/en/function.date.php進行格式化。

你的情況,這將是:

date('j M Y' time()); 

其中j =日,M =月,Y =年。

2

您可以像這樣以OOP方式進行操作。

$date = new DateTime('2000-01-01 00:00:00', new DateTimeZone('Europe/Amsterdam')); 
echo $date->format('Y-m-d H:i:s P') . "\n";