指定TimeZone及透過CultureInfo來設定預設時間格式
當Server的位置跟開發端在不同國家地區的時候
時間可以根據開發者需求設定
時間格式也可以設定不用每次都重寫ToString("yyyy/MM/dd")
程式部分
using System;
using System.Globalization;
using System.Linq;
using System.Threading;
namespace ConsoleUtc
{
class Program
{
static void Main(string[] args)
{
foreach (TimeZoneInfo zoneObj in TimeZoneInfo.GetSystemTimeZones())
{
Console.WriteLine(zoneObj.Id);
}
var zone = TimeZoneInfo.GetSystemTimeZones()
.Where(x => x.Id.Contains("Taipei"))?.First();
//指定時區的ID
Console.WriteLine($"---------------指定時區的ID---------------");
Console.WriteLine(zone.Id);
//指定的時區
TimeZoneInfo timezone =
TimeZoneInfo
.FindSystemTimeZoneById(zone.Id); //"Taipei Standard Time"
//New一個UTC DateTime
DateTime utcDT =
new DateTime(2019, 03, 12, 07, 26, 00, DateTimeKind.Utc);
//或是
//DateTime utcDT = DateTime.UtcNow;
//該時間與協調世界時的偏移
TimeSpan utcTS = timezone.GetUtcOffset(utcDT);
Console.WriteLine($"---------------該時間與協調世界時的偏移---------------");
Console.WriteLine(utcTS);
// DateTime的偏移
DateTimeOffset dateOffset =
new DateTimeOffset(utcDT, TimeSpan.Zero);
dateOffset = dateOffset.ToOffset(utcTS);
Console.WriteLine($"---------------DateTime的偏移---------------");
Console.WriteLine(dateOffset);
//設定時間預設格式
CultureInfo myCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
myCulture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
myCulture.DateTimeFormat.LongTimePattern = "hh:mm:ss fff";
Thread.CurrentThread.CurrentCulture = myCulture;
Console.WriteLine($"---------------用預設格式顯示時間---------------");
Console.WriteLine(dateAndOffset.DateTime);
Console.WriteLine(dateAndOffset.DateTime.ToShortDateString());
Console.ReadKey();
}
}
}
輸出結果