簡體   English   中英

PHP MYSQL將時區感知日期轉換為UTC

[英]PHP MYSQL convert timezone aware dates to UTC

我正在使用現有的調度應用程序,該應用程序將約會日期/時間在mysql中存儲為“ 2013-12-25 09:00:00”。 到目前為止,還沒有考慮任何時區,因為該時間只是簡單地發送到前端並以某種基本方式顯示。 現在,我想構建一些功能,例如“在應用程序發出X小時前發送提醒”。 顯然,要執行此操作,我需要知道時區以確定我是否在appt之前X個小時。

我不確定現在從哪里開始。 如何在不知道時區的情況下將現有日期轉換為UTC? 如果我確實從用戶那里收集了時區信息,我該如何將現有的mysql datetime格式轉換為UTC? 我也對使用UTC日期的一般往返工作流程有疑問。 這是我認為的工作方式:

  1. 將所有日期存儲在UTC
  2. 將所有日期傳遞給UTC客戶
  3. 讓客戶端為用戶應用偏移

創建新約會時:

  1. 根據用戶偏移量將日期/時間轉換為UTC
  2. 存放在UTC
  3. 用#1重新啟動進程

這個准確嗎? 感謝您的任何幫助,希望能夠正確執行此操作,但是不確定從所有這些現有應用程序開始,並且沒有時區信息:)

MySQL的TIMESTAMP數據類型(與DATETIME相對)存儲在UTC內部。 客戶端與客戶端的time_zone之間的轉換是在從客戶端接收數據或向客戶端發送數據后執行的:只需在會話開始時設置該變量即可:

SET time_zone = 'GMT';

至於轉換現有時間,您可以利用MySQL的CONVERT_TZ()函數:

UPDATE my_table SET my_column = CONVERT_TZ(my_column, 'GMT', 'MET');

在“ MySQL服務器時區支持”下閱讀更多信息。

暫無
暫無

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

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