系統對於時區的處理

關於時區,在跨時區的系統串接的處理上,可以參考 ISO 8601 date 裡面的 “Combined date and time representations” 和 “Time offsets from UTC” 兩個 section 。

常用的方法是:

  1. 2004-05-03T17:30:08+08:00 這樣的表示法
  2. 要求使用者自己把前端時間轉為 UTC + 0 (並對時間最後加一個大寫字母 Z)

在跨時區的情況下,當後端接到前端傳來的時間,後端會轉換為自己的時間,然後當然也可以再加註前端來源的時區備考,這樣的好處是後端在處理相關時間邏輯的時候會比較容易,對資料的管理也比較統一。

current timezone         : Asia/Taipei
current timestamp        : 1349411510
current datetime         : 2012-10-05:12:31:50
current datetime(ISO8601): 2012-10-05T12:31:50+08:00

current timezone         : UTC
current timestamp        : 1349411510
current datetime         : 2012-10-05:04:31:50
current datetime(ISO8601): 2012-10-05T04:31:50+00:00

current timezone         : America/New_York
current timestamp        : 1349411510
current datetime         : 2012-10-05:00:31:50
current datetime(ISO8601): 2012-10-05T00:31:50-04:00

當然也可以存成 unix timestamp 來處理就可以避開這個問題(因為 timestamp 統一由 UTC 1970/01/01 0:0:0 開始),但這在搜尋和識別上會比較不便就是了。

Posted in Programming
2 comments on “系統對於時區的處理
  1. 我们的项目经理告诉我时间字段用int(11)。

Leave a Reply

Your email address will not be published.