這裏是什麼,我想做一個簡單的例子。
我有一個變量$time
包含一個時間戳。
現在,我想將其轉換成不同的時區
有沒有辦法做到這一點,而無需使用功能date_default_timezone_set()
多次的時間戳?
我知道我的觀點可能看起來很混亂,而且點數也較少,所以請澄清評論中的任何疑問。
如果我有,例如,100個電話去改變它: -
- 它會影響我其他的功能
- 功能顧名思義它的默認
- 它減慢腳本。
這裏是什麼,我想做一個簡單的例子。
我有一個變量$time
包含一個時間戳。
現在,我想將其轉換成不同的時區
有沒有辦法做到這一點,而無需使用功能date_default_timezone_set()
多次的時間戳?
我知道我的觀點可能看起來很混亂,而且點數也較少,所以請澄清評論中的任何疑問。
如果我有,例如,100個電話去改變它: -
可以使用DateTime對象,並設置時區使用SetTimezone()方法所需。
例如,下面的代碼: -
$datetime = new DateTime();
var_dump($datetime->getTimezone()->getName());
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('UTC'));
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('America/New_York'));
var_dump($datetime->format(DateTime::ISO8601));
給我下面的輸出: -
string 'Europe/London' (length=13)
string '2012-06-20T20:33:29+0100' (length=24)
string '2012-06-20T19:33:29+0000' (length=24)
string '2012-06-20T15:33:29-0400' (length=24)
我的開發服務器默認TZ是歐洲/倫敦,所以你可能會稍有不同的結果。
有一個supported timezones here的列表。
爲了給您提供了創建在不同的時區的日期。這裏做了一些香港專業教育學院的一個樣本是我做了什麼
function create_date($format, $time, $offset = -6)
{
return gmdate($format, $time + (3600 * $offset));
}
如果你想記住這時間戳格式只是修改看起來像這樣。
function create_date($time, $offset = -6)
{
return $time + (3600 * $offset);
}
UPDATE:
如果您需要在文本形式時區進入我就從PHP Timezone List問題使用列表,然後在功能做一個簡單的查找該陣列上獲得的偏移做這個工作。
注意:
這正常工作,原來的時間必須是GMT時間
這需要像舊方法一樣輸入偏移量。這意味着我必須抵消每個時區。當php有我們的數據我想用某種方式:) – kritya
@kritya請參閱更新。我假設你的意思是你想要做一些像create_date(123456789,'US/Eastern'); – bretterer
你有什麼數據?只有一個時間戳,並且您希望其他時間區域的其他時間有23次相同的時間戳? – NaturalBornCamper
你調用該函數有什麼確切的問題? :) –
準確地說,我的觀點。而不是寫在這裏,你應該考慮在問題本身中包含這些信息:) –