php go專案開發的時區問題

2021-10-11 19:03:59 字數 1297 閱讀 7567

今天腦子裡突然冒出乙個疑問,前段時間做golang的web專案,框架是iris,測試環境是docker,發現官方的golang的docker容器裡面的時區是utc時區和北京時間相差8h,後面貌似是:

$ docker run -d \

-e "tz=asia/shanghai" \

...即執行容器時,指定容器內的時區資訊!解決了該問題!

網上搜尋全域性設定golang 的時區資訊,給出的方式是:通過自定義乙個tzinit,時區初始化包,來實現時區的全域性設定,init會在被其他包import時,自動呼叫inti()方法:

那以前做php時,使用的是php-fpm的映象,框架用的是tp5,為毛沒得時區的問題?

找到以前的開發環境,進入php-fpm的容器:

docker exec -it a567afd32fe3 /bin/bash

得到:root@a567afd32fe3:/var/www/html# date

thu dec 10 06:02:27 utc 2020

emmm,居然也是utc的時區,那為啥**層面使用time()或date輸出的時間是正確的北京時間呢?是誰幫我們轉換了時區?

首先想到的是php.ini裡面是否存在時區設定?

開啟php.ini檔案

查詢:date.timezone

那麼意思是不是在php.ini設定亞洲時區?還有誰能設定時區呢?首當其衝就是web框架了,使用phpstorm全域性搜尋一下:

date_default_timezone_set函式,該函式是設定php指令碼的時區資訊,會覆蓋php.ini的設定!達到動態設定的目的!

那就水落石出了,就是tp框架幫我們做了時區的設定,是在web生命週期裡面,初始化應用階段做了時區的設定,設定為了asia/chongqing時間,也可以理解,畢竟是咱國人開源的框架,面向的使用者都是中國人,使用asia/chongqing時區也是理所當然的。

專案中的時區問題概述

專案中發現new date 時在 本地 windows 啟動時正常,但在linux伺服器上少一天。注 因資料庫中儲存的時間為字串,所以此處不考慮資料庫帶來的時區問題。重點是在宿主機及docker容器調整後,問題依舊存在,故而在 級別進行處理 1 在專案啟動類中設定 啟動時設定該專案時區 return...

joomla元件開發中的時區問題

joomla的所有元件的日期資料,都統一使用mysql的datetime,輸出格式型別於2004 02 12t15 19 21 這種格式好處是在資料庫中可以很直觀地看到時間,但僅僅只是有這個好處,壞處卻一大堆,例如不方便兩個日期比較,不方便計算日期之間間隔了多久,總之一切日期運算都很不方便!joom...

關於docker部署專案上時區問題

不知道大家使用docker部署專案時有沒有遇到這樣的情況!資料庫的時間有問題 這裡的建立時間並非真實的三點,而是相差了八個小時 沒錯今天的問題就是關於docker容器的時間問題。1,先看伺服器的時間 我這裡的時間和當前時間一致。但是進入某個容器時顯示日期卻差了八個小時時差。docker exec i...