最近,有個客戶中毒,緊急找我們協助系統上雲端。
它是個活動報名網站。
這邊我想說的是,你永遠不會知道你的Server放在哪裡。
我會建議大家,遠離DateTime.Now 。改用DateTime.UtcNow。
為何用UTC時間?
因為,如此我們的程式不用擔憂Server到底在哪裡。
統一了標準。
不過,今天主題是Azure上的Web App要怎麼指定時區。
一開始,我微薄的知識不知道如何設定。讓Web App顯示台灣時間。
後來,看了幾個前輩的文章&找到一篇微軟的文章,並親自設定過,以下方法可行。
參考文章:
- Get the local server time for your Azure Website
- [Azure] Web 應用程式(WebSite) 改變時區 By 當麻許
- [Azure]設定 Azure Web 的時區讓相關時間函數可以正確 By 五餅二魚工作室
Azure Web App 上,如下圖,你可以找到應用程式設定選單。
其中應用程式設定中,其實就是對應到Web.Config中的AppSetting區塊。
只需要加入索引鍵:WEBSITE_TIME_ZONE,值:時區的值(參考)。
連結中,有段程式可以列出全部的區域值。透過LinqPad快速執行會得到一個.txt檔
void Main()
{
const string OUTPUTFILENAME = @"W:\TimeZoneInfo.txt";
DateTimeFormatInfo dateFormats = CultureInfo.CurrentCulture.DateTimeFormat;
ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
StreamWriter sw = new StreamWriter(OUTPUTFILENAME, false);
foreach (TimeZoneInfo timeZone in timeZones)
{
bool hasDST = timeZone.SupportsDaylightSavingTime;
TimeSpan offsetFromUtc = timeZone.BaseUtcOffset;
sw.WriteLine("ID: {0}", timeZone.Id);
sw.WriteLine(" Display Name: {0, 40}", timeZone.DisplayName);
}
sw.Close();
}
紅框中的ID,就是我們的目標。
設定完,記得存檔,存檔完記得將Web App重新啟動。時區設定即可生效。