2020/06/22 18:16 (JST) 更新
Tips >>
DateTimeの扱い
これは ASP.NET MVC の話というよりは .NET 全般の技術の話なのですが、何故ここで DateTime に触れるかというと、Azure ではだいたいの場合(Japan East リージョンを使ったとしても)タイムゾーンが UTC に固定されていることが多いからです。
そのような事情があるため、DateTime を扱う際には明示的にタイムゾーンを意識することを推奨します。
以下は実際に Azure の App Service (Japan East Region) で実行したコードの結果です。
// 以下、2020-06-22 17:13:10 +0900 に実行
var fmt = "yyyy/MM/dd HH:mm:ss";
TimeZone.CurrentTimeZone.StandardName → "Coordinated Universal Time"
TimeZone.CurrentTimeZone.DaylightName → "Coordinated Universal Time"
TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow) → 00:00:00
DateTime.Now.ToString(fmt) → "2020/06/22 08:13:10"
DateTime.UtcNow.ToString(fmt) → "2020/06/22 08:13:10"
DateTimeOffset.Now.ToString(fmt) → "2020/06/22 08:13:10"
DateTimeOffset.UtcNow.ToString(fmt) → "2020/06/22 08:13:10"
[+9]
new DateTimeOffset(DateTime.UtcNow).ToOffset(new TimeSpan(9, 0, 0)).ToString(fmt)
→ "2020/06/22 17:13:10"
[+8]
new DateTimeOffset(DateTime.UtcNow).ToOffset(new TimeSpan(8, 0, 0)).ToString(fmt)
→ "2020/06/22 16:13:10"
[0]
new DateTimeOffset(DateTime.UtcNow).ToOffset(new TimeSpan(0, 0, 0)).ToString(fmt)
→ "2020/06/22 08:13:10"
[-1]
new DateTimeOffset(DateTime.UtcNow).ToOffset(new TimeSpan(-1, 0, 0)).ToString(fmt)
→ "2020/06/22 07:13:10"