[Azure]設定 Azure Web 的時區讓相關時間函數可以正確
基本上系統開發大家都知道會需要考慮時區的差異,但以往這些系統多半都在地端的環境,只要去把主機的作業系統上的時區調整正確,一般不會有太大的問題。
剛好最近有系統要上 Azure Web Apps 的環境,上面的環境就不像是主機般可以去調整時區,造成一些系統他的 Log 紀錄或者是程式內紀錄的時間,都需要做一些轉換,有些也因為時區的關係,造成一些資料錯誤的狀況。但如果要去全面修改程式,又太費工了。因此找到一些設定,可以讓 Web Apps 的時間可以按照我們所期望的時區去調整。
因為我所使用的是 ZK,因此就做一了一個簡單的程式來測試一下。基本上就是將 Hello World 的程式多加上一個 Label,讓他可以顯示出時間。寫好後就將程式匯出成為一個 war 檔,FTP 到我們所建立的 Web Apps 站台。
所以就開啟瀏覽器連上網站,可以看到抓到的時間和我地端的時間相差八個小時。
因此我連上 Azure Portal 的網站上,將站台的「應用程式設定」→「一般設定」→「應用程式設定」,多增加一組「WEBSITE_TIME_ZONE」的設定,並設定為「Taipei Standard Time」。
一開始這個設定值我搞錯了,造成一值沒有辦法顯示正確時間。後來注意爬文才發現原來是要參考機碼位置「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones」,指定所想要使用的時區設定。
這樣調整之後,再將站台重新啟動,接下來抓到的時間,就不會有這樣的落差了。
雖然針對 Web Apps 是可以用這樣的方式來處理,但 Azure SQL Database 就不能了,因此如果有使用 Azure SQL Database 服務的時候,就要注意使用 GETDATE() 的所取出來的時間了。