【Azure】 Web App 時區設定

最近,有個客戶中毒,緊急找我們協助系統上雲端。

它是個活動報名網站。

這邊我想說的是,你永遠不會知道你的Server放在哪裡。

我會建議大家,遠離DateTime.Now 。改用DateTime.UtcNow。

為何用UTC時間?

因為,如此我們的程式不用擔憂Server到底在哪裡。

統一了標準。

不過,今天主題是Azure上的Web App要怎麼指定時區。

一開始,我微薄的知識不知道如何設定。讓Web App顯示台灣時間。

後來,看了幾個前輩的文章&找到一篇微軟的文章,並親自設定過,以下方法可行。

參考文章:

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重新啟動。時區設定即可生效。