public static void Main()
DateTime time1 = new DateTime(2018, 1, 1, 12, 1, 0);
DateTime time2 = new DateTime(2018, 11, 6, 23, 30, 0);
DateTimeOffset[] times = { new DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)),
new DateTimeOffset(time1, TimeSpan.Zero),
new DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)),
new DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) };
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName);
foreach (DateTimeOffset timeToConvert in times)
DateTimeOffset targetTime = timeToConvert.ConvertTime(tst);
Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime);