簡體   English   中英

PHP / MySQL時間戳和時區

[英]PHP/MySQL timestamp and timezones

如果我使用MySQL中的NOW()函數獲取當前時間戳,我可以通過php獲取該字段並在不同時區提供該時間嗎? 基本上將當前時區的當前時間轉換為另一個時區?

您可以使用DateTimeZone類:

$gmt = new DateTimeZone("GMT");
$datetimeInGMT = new DateTime($now, $gmt);

它還需要continent/city ,例如Europe/London

如果您的日期時間是非UTC,您可以使用setTimezone

$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York"));
$datetimeInGMT->setTimezone(new DateTimeZone("GMT"));

MySQL的時區處理比PHP更復雜。 它處理簡單的時區(EST,PST等)和我稱之為“區域時區”(美國/東部)。 使用區域區域使用正確的轉換,包括夏令時,即使DST規則多年來發生了變化。

我所做的是使用MySQL函數UTC_TIMESTAMP()將我的所有日​​期時間存儲為UTC。 然后,在查詢中,我使用MySQL函數CONVERT_TZ()到我的目標時區。 http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

注意:您可能需要更新時區表。 http://dev.mysql.com/downloads/timezones.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM